Hi Marcel.
> +int caif_rtnl_init(void)
> +{
> + struct sockaddr_nl addr;
> + int sk, err;
> + GError *gerr = NULL;
> +
> + sk = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
> + if (sk < 0)
> + return sk;
> +
> + memset(&addr, 0, sizeof(addr));
> + addr.nl_family = AF_NETLINK;
> + addr.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR | RTMGRP_IPV4_ROUTE;
> +
> + err = bind(sk, (struct sockaddr *) &addr, sizeof(addr));
> + if (err < 0) {
> + close(sk);
> + return err;
> + }
> +
> + channel = g_io_channel_unix_new(sk);
> + g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, &gerr);
> + g_io_channel_set_encoding(channel, NULL, &gerr);
> + g_io_channel_set_buffered(channel, TRUE);
> + g_io_channel_set_close_on_unref(channel, TRUE);
> +
> + rtnl_watch = g_io_add_watch(channel,
> + G_IO_IN | G_IO_NVAL | G_IO_HUP | G_IO_ERR,
> + netlink_event, NULL);
> + pending_requests = NULL;
> +
> + return 0;
> +}
Sigh, I realize I have a potential leak on gerr above. I'll wait for
more review comments from you,
and resubmit later.
Regards,
Sjur
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono