SOMAXCONN
- SO_ACCEPTCONN SO_ATTACH_FILTER SO_BACKLOG SO_BROADCAST SO_CHAMELEON
- SO_DEBUG SO_DETACH_FILTER SO_DGRAM_ERRIND SO_DOMAIN SO_DONTLINGER
- SO_DONTROUTE SO_ERROR SO_FAMILY SO_KEEPALIVE SO_LINGER SO_OOBINLINE
- SO_PASSCRED SO_PASSIFNAME SO_PEERCRED SO_PROTOCOL SO_PROTOTYPE
- SO_RCVBUF SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR SO_REUSEPORT
+ SO_ACCEPTCONN SO_ATTACH_FILTER SO_BACKLOG SO_BINDTODEVICE SO_BROADCAST
+ SO_BSDCOMPAT SO_BUSY_POLL SO_CHAMELEON SO_DEBUG SO_DETACH_FILTER
+ SO_DGRAM_ERRIND SO_DOMAIN SO_DONTLINGER SO_DONTROUTE SO_ERROR SO_FAMILY
+ SO_KEEPALIVE SO_LINGER SO_MARK SO_OOBINLINE SO_PASSCRED SO_PASSIFNAME
+ SO_PEEK_OFF SO_PEERCRED SO_PRIORITY SO_PROTOCOL SO_PROTOTYPE SO_RCVBUF
+ SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR SO_REUSEPORT
SO_SECURITY_AUTHENTICATION SO_SECURITY_ENCRYPTION_NETWORK
SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO
- SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
+ SO_STATE SO_TIMESTAMP SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
#endif /* !Newx */
#ifndef croak_sv
-# define croak_sv(sv) croak(SvPV_nolen(sv))
+# define croak_sv(sv) croak(SvPVx_nolen(sv))
#endif
#ifndef hv_stores
SP -= items;
addr = ST(0);
+ SvGETMAGIC(addr);
if(items < 2)
flags = 0;
* so let's use this sprintf() workaround everywhere.
* This is also more threadsafe than using inet_ntoa(). */
ST(0) = sv_2mortal(Perl_newSVpvf(aTHX_ "%d.%d.%d.%d", /* IPv6? */
- ((addr.s_addr >> 24) & 0xFF),
- ((addr.s_addr >> 16) & 0xFF),
- ((addr.s_addr >> 8) & 0xFF),
- ( addr.s_addr & 0xFF)));
+ (int)((addr.s_addr >> 24) & 0xFF),
+ (int)((addr.s_addr >> 16) & 0xFF),
+ (int)((addr.s_addr >> 8) & 0xFF),
+ (int)( addr.s_addr & 0xFF)));
}
void
ip_address = SvPVbyte(ip_address_sv, addrlen);
if (addrlen == sizeof(addr) || addrlen == 4)
addr.s_addr =
- (ip_address[0] & 0xFF) << 24 |
- (ip_address[1] & 0xFF) << 16 |
- (ip_address[2] & 0xFF) << 8 |
- (ip_address[3] & 0xFF);
+ (unsigned int)(ip_address[0] & 0xFF) << 24 |
+ (unsigned int)(ip_address[1] & 0xFF) << 16 |
+ (unsigned int)(ip_address[2] & 0xFF) << 8 |
+ (unsigned int)(ip_address[3] & 0xFF);
else
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
"Socket::pack_sockaddr_in",
# endif
ST(0) = sv_2mortal(newSVpvn((char *)&sin6, sizeof(sin6)));
#else
+ PERL_UNUSED_VAR(port);
+ PERL_UNUSED_VAR(sin6_addr);
ST(0) = (SV*)not_here("pack_sockaddr_in6");
#endif
}
mPUSHs(ip_address_sv);
}
#else
+ PERL_UNUSED_VAR(sin6_sv);
ST(0) = (SV*)not_here("pack_sockaddr_in6");
#endif
}
ST(0) = sv_2mortal(newSVpvn(str, strlen(str)));
#else
+ PERL_UNUSED_VAR(af);
+ PERL_UNUSED_VAR(ip_address_sv);
ST(0) = (SV*)not_here("inet_ntop");
#endif
sv_setpvn( ST(0), (char *)&ip_address, addrlen);
}
#else
+ PERL_UNUSED_VAR(af);
+ PERL_UNUSED_VAR(host);
ST(0) = (SV*)not_here("inet_pton");
#endif
mreq.imr_interface.s_addr = INADDR_ANY;
ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
#else
+ PERL_UNUSED_VAR(multiaddr);
+ PERL_UNUSED_VAR(source);
not_here("pack_ip_mreq_source");
#endif
}
mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr));
mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
#else
+ PERL_UNUSED_VAR(mreq_sv);
not_here("unpack_ip_mreq_source");
#endif
}
mreq.ipv6mr_interface = ifindex;
ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
#else
+ PERL_UNUSED_VAR(multiaddr);
+ PERL_UNUSED_VAR(ifindex);
not_here("pack_ipv6_mreq");
#endif
}
mPUSHp((char *)&mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr));
mPUSHi(mreq.ipv6mr_interface);
#else
+ PERL_UNUSED_VAR(mreq_sv);
not_here("unpack_ipv6_mreq");
#endif
}
use strict;
use warnings;
-use Test::More tests => 12;
+use Test::More tests => 13;
use Socket qw(:addrinfo AF_INET pack_sockaddr_in inet_aton);
cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST' );
ok( length $service, '$service is nonzero length for NH' );
+
+# RT79557
+pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ) =~ m/^(.*)$/s;
+( $err, $host, $service ) = getnameinfo( $1, NI_NUMERICHOST|NI_NUMERICSERV );
+cmp_ok( $err, "==", 0, '$err == 0 for $1' ) or diag( '$err was: ' . $err );