ash: speed up NOFORK code in ash by eliminating second find_applet().
[oweals/busybox.git] / libbb / create_icmp_socket.c
index 58d792b1b2aaab8ffee62e1df337eaf15b454468..64beba82baa2f7c14d10f05a97e19f7fee30512e 100644 (file)
@@ -2,36 +2,33 @@
 /*
  * 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
  */
 
-#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)
 {
-       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)
                        bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
-               else
-                       bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
+               bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
        }
 
        /* drop root privs if running setuid */
-       setuid(getuid());
+       xsetuid(getuid());
 
        return sock;
 }