*: use better isspace implementation
[oweals/busybox.git] / libbb / create_icmp_socket.c
index d804b39870f7f8d3afbfdb014e968713add0baf3..d75f8452d1129dbc2d2c6b6d1c2122a63a7cb9ff 100644 (file)
@@ -2,36 +2,35 @@
 /*
  * Utility routines.
  *
- * create raw socket for icmp protocol test permision
- * and drop root privilegies if running setuid
+ * create raw socket for icmp protocol
+ * and drop root privileges if running setuid
  *
+ * Licensed under GPLv2, see file LICENSE in this tarball for details.
  */
 
-#include <sys/types.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <errno.h>
-#include <unistd.h>
 #include "libbb.h"
 
-int create_icmp_socket(void)
+int FAST_FUNC create_icmp_socket(void)
 {
-       struct protoent *proto;
        int sock;
-
+#if 0
+       struct protoent *proto;
        proto = getprotobyname("icmp");
        /* if getprotobyname failed, just silently force
         * proto->p_proto to have the correct value for "icmp" */
-       if ((sock = socket(AF_INET, SOCK_RAW,
-                       (proto ? proto->p_proto : 1))) < 0) {        /* 1 == ICMP */
+       sock = socket(AF_INET, SOCK_RAW,
+                       (proto ? proto->p_proto : 1)); /* 1 == ICMP */
+#else
+       sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */
+#endif
+       if (sock < 0) {
                if (errno == EPERM)
-                       error_msg_and_die("permission denied. (are you root?)");
-               else
-                       perror_msg_and_die(can_not_create_raw_socket);
+                       bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
+               bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
        }
 
        /* drop root privs if running setuid */
-       setuid(getuid());
+       xsetuid(getuid());
 
        return sock;
 }