rt_names: stop allocating 5k in rwdata
[oweals/busybox.git] / networking / udhcp / clientsocket.c
index 8520619686d2d49e28e500d1eb0c6e4c6f8ef9b4..541f883b5bfb6570beb4bc2a7ee95c3cb0a3371c 100644 (file)
@@ -22,7 +22,7 @@
  */
 
 #include <features.h>
-#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined(_NEWLIB_VERSION)
+#if (defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined(_NEWLIB_VERSION)
 #include <netpacket/packet.h>
 #include <net/ethernet.h>
 #else
@@ -40,20 +40,12 @@ int raw_socket(int ifindex)
        struct sockaddr_ll sock;
 
        DEBUG("Opening raw socket on ifindex %d", ifindex);
-       fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
-       if (fd < 0) {
-               bb_perror_msg("socket");
-               return -1;
-       }
+       fd = xsocket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
 
        sock.sll_family = AF_PACKET;
        sock.sll_protocol = htons(ETH_P_IP);
        sock.sll_ifindex = ifindex;
-       if (bind(fd, (struct sockaddr *) &sock, sizeof(sock)) < 0) {
-               bb_perror_msg("bind");
-               close(fd);
-               return -1;
-       }
+       xbind(fd, (struct sockaddr *) &sock, sizeof(sock));
 
        return fd;
 }