Lines Matching defs:nl
48 int avahi_netlink_work(AvahiNetlink *nl, int block) {
57 assert(nl);
59 iov.iov_base = nl->buffer;
60 iov.iov_len = nl->buffer_length;
70 if ((bytes = recvmsg(nl->fd, &smsg, 0)) < 0) {
90 p = (struct nlmsghdr *) nl->buffer;
92 assert(nl->callback);
100 nl->callback(nl, p, nl->userdata);
107 AvahiNetlink *nl = userdata;
110 assert(nl);
111 assert(fd == nl->fd);
113 avahi_netlink_work(nl, 0);
116 AvahiNetlink *avahi_netlink_new(const AvahiPoll *poll_api, uint32_t groups, void (*cb) (AvahiNetlink *nl, struct nlmsghdr *n, void* userdata), void* userdata) {
120 AvahiNetlink *nl = NULL;
145 if (!(nl = avahi_new(AvahiNetlink, 1))) {
150 nl->poll_api = poll_api;
151 nl->fd = fd;
152 nl->seq = 0;
153 nl->callback = cb;
154 nl->userdata = userdata;
156 if (!(nl->buffer = avahi_new(uint8_t, nl->buffer_length = 64*1024))) {
161 if (!(nl->watch = poll_api->watch_new(poll_api, fd, AVAHI_WATCH_IN, socket_event, nl))) {
166 return nl;
173 if (nl) {
174 avahi_free(nl->buffer);
175 avahi_free(nl);
181 void avahi_netlink_free(AvahiNetlink *nl) {
182 assert(nl);
184 if (nl->watch)
185 nl->poll_api->watch_free(nl->watch);
187 if (nl->fd >= 0)
188 close(nl->fd);
190 avahi_free(nl->buffer);
191 avahi_free(nl);
194 int avahi_netlink_send(AvahiNetlink *nl, struct nlmsghdr *m, unsigned *ret_seq) {
195 assert(nl);
198 m->nlmsg_seq = nl->seq++;
201 if (send(nl->fd, m, m->nlmsg_len, 0) < 0) {