inetd: make it NOMMU-capable and IPv6-friendly. Lots of renames

of variable/function names

Total: -2474 bytes
   text    data     bss     dec     hex filename
 802215     661    7452  810328   c5d58 busybox_old
 800120     661    7428  808209   c5511 busybox_unstripped
This commit is contained in:
Denis Vlasenko
2008-03-12 22:14:34 +00:00
parent 4e6c8120a5
commit 4e6d5117b8
10 changed files with 839 additions and 1061 deletions

View File

@@ -2,27 +2,26 @@
/*
* Utility routines.
*
* create raw socket for icmp (IPv6 version) protocol test permission
* create raw socket for icmp (IPv6 version) protocol
* and drop root privileges if running setuid
*
*/
//#include <sys/types.h>
//#include <netdb.h>
//#include <sys/socket.h>
#include "libbb.h"
#if ENABLE_FEATURE_IPV6
int 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" */
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);

View File

@@ -2,26 +2,25 @@
/*
* Utility routines.
*
* create raw socket for icmp protocol test permission
* create raw socket for icmp protocol
* and drop root privileges if running setuid
*
*/
//#include <sys/types.h>
//#include <netdb.h>
//#include <sys/socket.h>
#include "libbb.h"
int create_icmp_socket(void)
{
struct protoent *proto;
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);

View File

@@ -132,11 +132,15 @@ USE_FEATURE_IPV6(sa_family_t af,)
/* Ugly parsing of host:addr */
if (ENABLE_FEATURE_IPV6 && host[0] == '[') {
/* Even uglier parsing of [xx]:nn */
host++;
cp = strchr(host, ']');
if (!cp || cp[1] != ':') /* Malformed: must have [xx]:nn */
bb_error_msg_and_die("bad address '%s'", org_host);
//return r; /* return NULL */
if (!cp || cp[1] != ':') { /* Malformed: must have [xx]:nn */
bb_error_msg("bad address '%s'", org_host);
if (ai_flags & DIE_ON_ERROR)
xfunc_die();
return NULL;
}
} else {
cp = strrchr(host, ':');
if (ENABLE_FEATURE_IPV6 && cp && strchr(host, ':') != cp) {
@@ -144,13 +148,19 @@ USE_FEATURE_IPV6(sa_family_t af,)
cp = NULL; /* it's not a port spec */
}
}
if (cp) {
if (cp) { /* points to ":" or "]:" */
int sz = cp - host + 1;
host = safe_strncpy(alloca(sz), host, sz);
if (ENABLE_FEATURE_IPV6 && *cp != ':')
cp++; /* skip ']' */
cp++; /* skip ':' */
port = xatou16(cp);
port = bb_strtou(cp, NULL, 10);
if (errno || (unsigned)port > 0xffff) {
bb_error_msg("bad port spec '%s'", org_host);
if (ai_flags & DIE_ON_ERROR)
xfunc_die();
return NULL;
}
}
memset(&hint, 0 , sizeof(hint));
@@ -221,6 +231,7 @@ len_and_sockaddr* xdotted2sockaddr(const char *host, int port)
return str2sockaddr(host, port, AF_UNSPEC, AI_NUMERICHOST | DIE_ON_ERROR);
}
#undef xsocket_type
int xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock_type)
{
SKIP_FEATURE_IPV6(enum { family = AF_INET };)