Move create_icmp[6]_socket to its only user, and simplify it

function                                             old     new   delta
run_applet_and_exit                                  711     714      +3
sendping_tail                                        239     236      -3
common_ping_main                                    1798    1770     -28
create_icmp_socket                                    65       -     -65
create_icmp6_socket                                   65       -     -65
------------------------------------------------------------------------------
(add/remove: 0/4 grow/shrink: 1/2 up/down: 3/-161)           Total: -158 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2013-06-28 00:30:46 +02:00
parent 4928e9f7d0
commit 59f46676a9
5 changed files with 44 additions and 99 deletions

View File

@@ -27,8 +27,6 @@ lib-y += concat_subpath_file.o
lib-y += copy_file.o
lib-y += copyfd.o
lib-y += crc32.o
lib-y += create_icmp6_socket.o
lib-y += create_icmp_socket.o
lib-y += default_error_retval.o
lib-y += device_open.o
lib-y += dump.o

View File

@@ -1,38 +0,0 @@
/* vi: set sw=4 ts=4: */
/*
* Utility routines.
*
* create raw socket for icmp (IPv6 version) protocol
* and drop root privileges if running setuid
*
* Licensed under GPLv2, see file LICENSE in this source tree.
*/
#include "libbb.h"
#if ENABLE_FEATURE_IPV6
int FAST_FUNC create_icmp6_socket(void)
{
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" */
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);
bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
}
/* drop root privs if running setuid */
xsetuid(getuid());
return sock;
}
#endif

View File

@@ -1,36 +0,0 @@
/* vi: set sw=4 ts=4: */
/*
* Utility routines.
*
* create raw socket for icmp protocol
* and drop root privileges if running setuid
*
* Licensed under GPLv2, see file LICENSE in this source tree.
*/
#include "libbb.h"
int FAST_FUNC create_icmp_socket(void)
{
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" */
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);
bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket);
}
/* drop root privs if running setuid */
xsetuid(getuid());
return sock;
}