86 |
extern int ping_router __P ((int argc, char **argv)); |
extern int ping_router __P ((int argc, char **argv)); |
87 |
|
|
88 |
PING *ping; |
PING *ping; |
|
int is_root; /* were we started with root privileges */ |
|
89 |
u_char *data_buffer; |
u_char *data_buffer; |
90 |
size_t data_length = PING_DATALEN; |
size_t data_length = PING_DATALEN; |
91 |
unsigned options; |
unsigned options; |
110 |
u_char pattern[16]; |
u_char pattern[16]; |
111 |
int pattern_len = 16; |
int pattern_len = 16; |
112 |
u_char *patptr = NULL; |
u_char *patptr = NULL; |
113 |
|
int is_root = getuid () == 0; |
|
is_root = getuid () == 0; |
|
114 |
|
|
|
if ((ping = ping_init (ICMP_ECHO, getpid ())) == NULL) |
|
|
{ |
|
|
fprintf (stderr, "can't init ping: %s\n", strerror (errno)); |
|
|
exit (1); |
|
|
} |
|
|
ping_set_sockopt (ping, SO_BROADCAST, (char *)&one, sizeof (one)); |
|
|
|
|
|
/* Reset root privileges */ |
|
|
setuid (getuid ()); |
|
|
|
|
115 |
/* Parse command line */ |
/* Parse command line */ |
116 |
while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) |
while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) |
117 |
!= EOF) |
!= EOF) |
223 |
} |
} |
224 |
|
|
225 |
init_data_buffer (patptr, pattern_len); |
init_data_buffer (patptr, pattern_len); |
226 |
|
|
227 |
|
ping = ping_init (ICMP_ECHO, getpid ()); |
228 |
|
if (ping == NULL) |
229 |
|
{ |
230 |
|
fprintf (stderr, "can't init ping: %s\n", strerror (errno)); |
231 |
|
exit (1); |
232 |
|
} |
233 |
|
ping_set_sockopt (ping, SO_BROADCAST, (char *)&one, sizeof (one)); |
234 |
|
|
235 |
|
/* Reset root privileges */ |
236 |
|
setuid (getuid ()); |
237 |
|
|
238 |
return (*ping_type)(argc, argv); |
return (*ping_type)(argc, argv); |
239 |
} |
} |