mkfs.vfat: fix a problem with over-estimating FAT size
[oweals/busybox.git] / libbb / create_icmp6_socket.c
index 596610449b1ffc2febb2d3d887fc4459f15458de..91e478ec83c62191510364c0212dda69d1f4b28d 100644 (file)
@@ -2,37 +2,36 @@
 /*
  * Utility routines.
  *
- * create raw socket for icmp (IPv6 version) protocol test permision
- * and drop root privilegies if running setuid
+ * create raw socket for icmp (IPv6 version) 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"
 
-#ifdef CONFIG_FEATURE_IPV6
-int create_icmp6_socket(void)
+#if ENABLE_FEATURE_IPV6
+int FAST_FUNC create_icmp6_socket(void)
 {
-       struct protoent *proto;
        int sock;
-
+#if 0
+       struct protoent *proto;
        proto = getprotobyname("ipv6-icmp");
        /* if getprotobyname failed, just silently force
         * proto->p_proto to have the correct value for "ipv6-icmp" */
-       if ((sock = socket(AF_INET6, SOCK_RAW,
-                       (proto ? proto->p_proto : IPPROTO_ICMPV6))) < 0) {
+       sock = socket(AF_INET6, SOCK_RAW,
+                       (proto ? proto->p_proto : IPPROTO_ICMPV6));
+#else
+       sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
+#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;
 }