-static int init_uevent_netlink_sock(void)
-{
- struct sockaddr_nl snl;
- int err;
-
- memset(&snl, 0x00, sizeof(struct sockaddr_nl));
- snl.nl_family = AF_NETLINK;
- snl.nl_pid = getpid();
- snl.nl_groups = 1;
-
- uevent_netlink_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
- if (uevent_netlink_sock == -1) {
- fprintf(stderr, "error getting socket: %s\n", strerror(errno));
- return -1;
- }
-
- err = bind(uevent_netlink_sock, (struct sockaddr *) &snl,
- sizeof(struct sockaddr_nl));
- if (err < 0) {
- fprintf(stderr, "bind failed: %s\n", strerror(errno));
- close(uevent_netlink_sock);
- uevent_netlink_sock = -1;
- return -1;
- }
-
- return 0;
-}
-