Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 816 - (show annotations) (download)
Fri Apr 24 18:33:46 2009 UTC (15 years, 1 month ago) by niro
File MIME type: text/plain
File size: 776 byte(s)
-updated to busybox-1.13.4
1 /* vi: set sw=4 ts=4: */
2 /*
3 * Utility routines.
4 *
5 * create raw socket for icmp protocol
6 * and drop root privileges if running setuid
7 */
8
9 #include "libbb.h"
10
11 int FAST_FUNC create_icmp_socket(void)
12 {
13 int sock;
14 #if 0
15 struct protoent *proto;
16 proto = getprotobyname("icmp");
17 /* if getprotobyname failed, just silently force
18 * proto->p_proto to have the correct value for "icmp" */
19 sock = socket(AF_INET, SOCK_RAW,
20 (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)
26 bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
27 bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
28 }
29
30 /* drop root privs if running setuid */
31 xsetuid(getuid());
32
33 return sock;
34 }