int nl_open(void)
int nl_open(int *nr)
int nl_open(void){	int fd, err;	sendbuf = malloc(NL_BUFSIZE * 2);	if (!sendbuf)		return -ENOMEM;	recvbuf = sendbuf + NL_BUFSIZE;	fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_TGT);	if (fd < 0) {		eprintf("%d\n", fd);		return fd;	}	memset(&src_addr, 0, sizeof(src_addr));	src_addr.nl_family = AF_NETLINK;	src_addr.nl_pid = getpid();	src_addr.nl_groups = 0; /* not in mcast groups */	err = bind(fd, (struct sockaddr *)&src_addr, sizeof(src_addr));	if (err < 0) {		eprintf("%d\n", fd);		goto out;	}	memset(&dest_addr, 0, sizeof(dest_addr));	dest_addr.nl_family = AF_NETLINK;	dest_addr.nl_pid = 0; /* kernel */	dest_addr.nl_groups = 0; /* unicast */	nl_start(fd);	return fd;out:	close(fd);	return err;}