fn = dl_event_fn(ev->k.tgt_passthru.tid);
fn = dl_event_fn(ev->k.tgt_passthru.tid, ev->k.tgt_passthru.typeid);
void nl_event_handle(int fd){	struct nlmsghdr *nlh;	struct tgt_event *ev;	int err;	void (*fn) (char *);	err = nl_read(fd);	if (err < 0)		return;	nlh = (struct nlmsghdr *) recvbuf;	ev = (struct tgt_event *) NLMSG_DATA(nlh);	switch (nlh->nlmsg_type) {	case TGT_KEVENT_CMD_REQ:		cmd_queue(fd, NLMSG_DATA(recvbuf), sendbuf);		break;	case TGT_KEVENT_TARGET_PASSTHRU:		fn = dl_event_fn(ev->k.tgt_passthru.tid);		if (fn)			fn(NLMSG_DATA(recvbuf));		else			eprintf("Cannot handle async event %d\n",				ev->k.tgt_passthru.tid);		break;	default:		/* kernel module bug */		eprintf("unknown event %u\n", nlh->nlmsg_type);		exit(-1);		break;	}}