s3: nmbd: Add fd, triggered elements to struct socket_attributes.
authorJeremy Allison <jra@samba.org>
Fri, 23 Sep 2016 19:05:59 +0000 (12:05 -0700)
committerStefan Metzmacher <metze@samba.org>
Mon, 24 Oct 2016 08:56:11 +0000 (10:56 +0200)
Zero the attrs array on allocation, and mirror the fd's.

This will allow us to eventually remove source3/lib/events.c
dependency and make nmbd purely tevent based.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=12283
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
(cherry picked from commit d8ade0730797df22bfe28847e034eb6d116b0e00)

source3/nmbd/nmbd_packets.c

index c9a2dc757ce9a9122c3695cdd372a028a6347ddf..619cc9a095a03f0e5344e0d7309104b0b159b4da 100644 (file)
@@ -1683,6 +1683,8 @@ on subnet %s\n", rrec->response_id, inet_ntoa(rrec->packet->ip), subrec->subnet_
 struct socket_attributes {
        enum packet_type type;
        bool broadcast;
+       int fd;
+       bool triggered;
 };
 
 static bool create_listen_pollfds(struct pollfd **pfds,
@@ -1723,7 +1725,7 @@ static bool create_listen_pollfds(struct pollfd **pfds,
                return true;
        }
 
-       attrs = talloc_array(NULL, struct socket_attributes, count);
+       attrs = talloc_zero_array(NULL, struct socket_attributes, count);
        if (attrs == NULL) {
                DEBUG(1, ("create_listen_pollfds: malloc fail for attrs. "
                          "size %d\n", count));
@@ -1734,11 +1736,13 @@ static bool create_listen_pollfds(struct pollfd **pfds,
        num = 0;
 
        fds[num].fd = ClientNMB;
+       attrs[num].fd = ClientNMB;
        attrs[num].type = NMB_PACKET;
        attrs[num].broadcast = false;
        num += 1;
 
        fds[num].fd = ClientDGRAM;
+       attrs[num].fd = ClientDGRAM;
        attrs[num].type = DGRAM_PACKET;
        attrs[num].broadcast = false;
        num += 1;
@@ -1747,6 +1751,7 @@ static bool create_listen_pollfds(struct pollfd **pfds,
 
                if (subrec->nmb_sock != -1) {
                        fds[num].fd = subrec->nmb_sock;
+                       attrs[num].fd = subrec->nmb_sock;
                        attrs[num].type = NMB_PACKET;
                        attrs[num].broadcast = false;
                        num += 1;
@@ -1754,6 +1759,7 @@ static bool create_listen_pollfds(struct pollfd **pfds,
 
                if (subrec->nmb_bcast != -1) {
                        fds[num].fd = subrec->nmb_bcast;
+                       attrs[num].fd = subrec->nmb_bcast;
                        attrs[num].type = NMB_PACKET;
                        attrs[num].broadcast = true;
                        num += 1;
@@ -1761,6 +1767,7 @@ static bool create_listen_pollfds(struct pollfd **pfds,
 
                if (subrec->dgram_sock != -1) {
                        fds[num].fd = subrec->dgram_sock;
+                       attrs[num].fd = subrec->dgram_sock;
                        attrs[num].type = DGRAM_PACKET;
                        attrs[num].broadcast = false;
                        num += 1;
@@ -1768,6 +1775,7 @@ static bool create_listen_pollfds(struct pollfd **pfds,
 
                if (subrec->dgram_bcast != -1) {
                        fds[num].fd = subrec->dgram_bcast;
+                       attrs[num].fd = subrec->dgram_bcast;
                        attrs[num].type = DGRAM_PACKET;
                        attrs[num].broadcast = true;
                        num += 1;