Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/libbb/create_icmp_socket.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 532 by niro, Sat Sep 1 22:45:15 2007 UTC revision 816 by niro, Fri Apr 24 18:33:46 2009 UTC
# Line 2  Line 2 
2  /*  /*
3   * Utility routines.   * Utility routines.
4   *   *
5   * create raw socket for icmp protocol test permission   * create raw socket for icmp protocol
6   * and drop root privileges if running setuid   * and drop root privileges if running setuid
  *  
7   */   */
8    
 #include <sys/types.h>  
 #include <netdb.h>  
 #include <sys/socket.h>  
 #include <errno.h>  
 #include <unistd.h>  
9  #include "libbb.h"  #include "libbb.h"
10    
11  int create_icmp_socket(void)  int FAST_FUNC create_icmp_socket(void)
12  {  {
  struct protoent *proto;  
13   int sock;   int sock;
14    #if 0
15     struct protoent *proto;
16   proto = getprotobyname("icmp");   proto = getprotobyname("icmp");
17   /* if getprotobyname failed, just silently force   /* if getprotobyname failed, just silently force
18   * proto->p_proto to have the correct value for "icmp" */   * proto->p_proto to have the correct value for "icmp" */
19   if ((sock = socket(AF_INET, SOCK_RAW,   sock = socket(AF_INET, SOCK_RAW,
20   (proto ? proto->p_proto : 1))) < 0) {        /* 1 == ICMP */   (proto ? proto->p_proto : 1)); /* 1 == ICMP */
21    #else
22     sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */
23    #endif
24     if (sock < 0) {
25   if (errno == EPERM)   if (errno == EPERM)
26   bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);   bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
27   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);  
28   }   }
29    
30   /* drop root privs if running setuid */   /* drop root privs if running setuid */

Legend:
Removed from v.532  
changed lines
  Added in v.816