コード例 #1
0
static void
add_network (GNetworkMonitorNetlink *nl,
             GSocketFamily           family,
             gint                    dest_len,
             guint8                 *dest,
             guint8                 *gateway)
{
  GInetAddress *dest_addr;
  GInetAddressMask *network;

  if (dest)
    dest_addr = g_inet_address_new_from_bytes (dest, family);
  else
    dest_addr = g_inet_address_new_any (family);
  network = g_inet_address_mask_new (dest_addr, dest_len, NULL);
  g_object_unref (dest_addr);
  g_return_if_fail (network != NULL);

  if (nl->priv->dump_networks)
    g_ptr_array_add (nl->priv->dump_networks, network);
  else
    {
      g_network_monitor_base_add_network (G_NETWORK_MONITOR_BASE (nl), network);
      g_object_unref (network);
    }
}
コード例 #2
0
ファイル: arvgvinterface.c プロジェクト: lu-zero/aravis
static ArvDevice *
arv_gv_interface_open_device (ArvInterface *interface, const char *device_id)
{
	ArvGvInterface *gv_interface;
	ArvDevice *device = NULL;
	ArvGvInterfaceDeviceInfos *device_infos;
	GInetAddress *device_address;

	gv_interface = ARV_GV_INTERFACE (interface);

	if (device_id == NULL) {
		GList *device_list;

		device_list = g_hash_table_get_values (gv_interface->priv->devices);
		device_infos = device_list != NULL ? device_list->data : NULL;
		g_list_free (device_list);
	} else {
		device_infos = g_hash_table_lookup (gv_interface->priv->devices, device_id);

		if (device_infos == NULL)
			device_infos = g_hash_table_lookup (gv_interface->priv->devices_by_mac, device_id);
	}

	if (device_infos == NULL)
		return NULL;

	device_address = g_inet_address_new_from_bytes
		(&device_infos->discovery_data[ARV_GVBS_CURRENT_IP_ADDRESS_OFFSET],
		 G_SOCKET_FAMILY_IPV4);
	device = arv_gv_device_new (device_infos->interface_address, device_address);
	g_object_unref (device_address);

	return device;
}
コード例 #3
0
ファイル: ginetaddress.c プロジェクト: msakai/ruby-gnome2
/* TODO: Should this take an array instead? */
static VALUE
rg_s_new_from_bytes(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self)
{
        VALUE rbbytes, rbfamily;
        guint8 *bytes;
        GSocketFamily family;

        rb_scan_args(argc, argv, "11", &rbbytes, &rbfamily);
        bytes = (guint8 *)RVAL2CSTR(rbbytes);
        family = RVAL2GSOCKETFAMILY(rbfamily);

        /* TODO: Should check encoding. */
        /* TODO: We can't pass bytes as such, as it will be NULL-terminated. */
        /* TODO: Do we need to deal with G_SOCKET_FAMILY_UNIX? */
        switch (family) {
        case G_SOCKET_FAMILY_IPV4:
                if (RSTRING_LEN(rbbytes) != 4)
                        rb_raise(rb_eArgError, "string containing 4 bytes expected");
                break;
        case G_SOCKET_FAMILY_IPV6:
                if (RSTRING_LEN(rbbytes) != 16)
                        rb_raise(rb_eArgError, "string containing 16 bytes expected");
                break;
        case G_SOCKET_FAMILY_INVALID:
        case G_SOCKET_FAMILY_UNIX:
                rb_raise(rb_eArgError, "invalid family: %d", family);
        default:
                rb_raise(rb_eArgError, "unknown family: %d", family);
                break;
        }

        return GOBJ2RVAL_UNREF(g_inet_address_new_from_bytes(bytes, family));
}
コード例 #4
0
ファイル: arvgvinterface.c プロジェクト: mdavidsaver/aravis
static GInetAddress *
_device_infos_to_ginetaddress (ArvGvInterfaceDeviceInfos *device_infos)
{
	GInetAddress *device_address;

	device_address = g_inet_address_new_from_bytes
		(&device_infos->discovery_data[ARV_GVBS_CURRENT_IP_ADDRESS_OFFSET],
		 G_SOCKET_FAMILY_IPV4);

	return device_address;
}
コード例 #5
0
static gchar *
get_address_string (Addr * addr)
{
    gchar *res;
    GInetAddress *inet;

    inet = g_inet_address_new_from_bytes (addr->bytes,
                                          addr->size == 4 ? G_SOCKET_FAMILY_IPV4 : G_SOCKET_FAMILY_IPV6);
    res = g_inet_address_to_string (inet);
    g_object_unref (inet);

    return res;
}
コード例 #6
0
ファイル: arvfakecamera.c プロジェクト: lu-zero/aravis
GSocketAddress *
arv_fake_camera_get_stream_address (ArvFakeCamera *camera)
{
	GSocketAddress *stream_socket_address;
	GInetAddress *inet_address;
	guint32 value;

	g_return_val_if_fail (ARV_IS_FAKE_CAMERA (camera), NULL);

	value = GUINT32_FROM_BE (_get_register (camera, ARV_GVBS_STREAM_CHANNEL_0_IP_ADDRESS_OFFSET));

	inet_address = g_inet_address_new_from_bytes ((guint8 *) &value, G_SOCKET_FAMILY_IPV4);
	stream_socket_address = g_inet_socket_address_new
		(inet_address,
		 _get_register (camera, ARV_GVBS_STREAM_CHANNEL_0_PORT_OFFSET));
	g_object_unref (inet_address);

	return stream_socket_address;
}
コード例 #7
0
static void
remove_network (GNetworkMonitorNetlink *nl,
                GSocketFamily           family,
                gint                    dest_len,
                guint8                 *dest,
                guint8                 *gateway)
{
  GInetAddress *dest_addr;
  GInetAddressMask *network;

  if (dest)
    dest_addr = g_inet_address_new_from_bytes (dest, family);
  else
    dest_addr = g_inet_address_new_any (family);
  network = g_inet_address_mask_new (dest_addr, dest_len, NULL);
  g_object_unref (dest_addr);
  g_return_if_fail (network != NULL);

  if (nl->priv->dump_networks)
    {
      GInetAddressMask **dump_networks = (GInetAddressMask **)nl->priv->dump_networks->pdata;
      int i;

      for (i = 0; i < nl->priv->dump_networks->len; i++)
        {
          if (g_inet_address_mask_equal (network, dump_networks[i]))
            g_ptr_array_remove_index_fast (nl->priv->dump_networks, i--);
        }
      g_object_unref (network);
    }
  else
    {
      g_network_monitor_base_remove_network (G_NETWORK_MONITOR_BASE (nl), network);
      g_object_unref (network);
    }
}