diff options
Diffstat (limited to 'networking/udhcp/socket.c')
-rw-r--r-- | networking/udhcp/socket.c | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/networking/udhcp/socket.c b/networking/udhcp/socket.c index 60190a044..c19838a7b 100644 --- a/networking/udhcp/socket.c +++ b/networking/udhcp/socket.c | |||
@@ -130,29 +130,3 @@ int listen_socket(unsigned int ip, int port, char *inf) | |||
130 | 130 | ||
131 | return fd; | 131 | return fd; |
132 | } | 132 | } |
133 | |||
134 | |||
135 | int raw_socket(int ifindex) | ||
136 | { | ||
137 | int fd; | ||
138 | struct sockaddr_ll sock; | ||
139 | |||
140 | DEBUG(LOG_INFO, "Opening raw socket on ifindex %d", ifindex); | ||
141 | if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) { | ||
142 | DEBUG(LOG_ERR, "socket call failed: %m"); | ||
143 | return -1; | ||
144 | } | ||
145 | |||
146 | while (fd >= 0 && fd < 3) fd = dup(fd); /* don't let daemon close fds on us */ | ||
147 | |||
148 | sock.sll_family = AF_PACKET; | ||
149 | sock.sll_protocol = htons(ETH_P_IP); | ||
150 | sock.sll_ifindex = ifindex; | ||
151 | if (bind(fd, (struct sockaddr *) &sock, sizeof(sock)) < 0) { | ||
152 | DEBUG(LOG_ERR, "bind call failed: %m"); | ||
153 | close(fd); | ||
154 | return -1; | ||
155 | } | ||
156 | |||
157 | return fd; | ||
158 | } | ||