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
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to