From 92d7f6522617c947d635680d045f12a4ef77bcb4 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 27 Dec 2014 07:51:34 +0100 Subject: convert checksum check to sha256 Rename the variable name to PKG_HASH and use a 256 Bit SHA checksum to verify the integrity of distfiles. While there do some housekeeping and remove old packages. --- package/ndisc6/Makefile | 45 ++++++++ package/ndisc6/patches/patch-rdnssd_Makefile_am | 13 +++ package/ndisc6/patches/patch-rdnssd_Makefile_in | 30 ++++++ package/ndisc6/patches/patch-rdnssd_icmp_c | 20 ++++ package/ndisc6/patches/patch-rdnssd_rdnssd_c | 78 ++++++++++++++ package/ndisc6/patches/patch-src_addrinfo_c | 21 ++++ package/ndisc6/patches/patch-src_ndisc_c | 35 ++++++ package/ndisc6/patches/patch-src_tcpspray_c | 48 +++++++++ package/ndisc6/patches/patch-src_tcptraceroute_c | 20 ++++ package/ndisc6/patches/patch-src_trace-tcp_c | 11 ++ package/ndisc6/patches/patch-src_trace-udp_c | 11 ++ package/ndisc6/patches/patch-src_traceroute_c | 128 ++++++++++++++++++++++ package/ndisc6/patches/patch-src_traceroute_h | 26 +++++ package/ndisc6/src/rdnssd/strverscmp.c | 131 +++++++++++++++++++++++ 14 files changed, 617 insertions(+) create mode 100644 package/ndisc6/Makefile create mode 100644 package/ndisc6/patches/patch-rdnssd_Makefile_am create mode 100644 package/ndisc6/patches/patch-rdnssd_Makefile_in create mode 100644 package/ndisc6/patches/patch-rdnssd_icmp_c create mode 100644 package/ndisc6/patches/patch-rdnssd_rdnssd_c create mode 100644 package/ndisc6/patches/patch-src_addrinfo_c create mode 100644 package/ndisc6/patches/patch-src_ndisc_c create mode 100644 package/ndisc6/patches/patch-src_tcpspray_c create mode 100644 package/ndisc6/patches/patch-src_tcptraceroute_c create mode 100644 package/ndisc6/patches/patch-src_trace-tcp_c create mode 100644 package/ndisc6/patches/patch-src_trace-udp_c create mode 100644 package/ndisc6/patches/patch-src_traceroute_c create mode 100644 package/ndisc6/patches/patch-src_traceroute_h create mode 100644 package/ndisc6/src/rdnssd/strverscmp.c (limited to 'package/ndisc6') diff --git a/package/ndisc6/Makefile b/package/ndisc6/Makefile new file mode 100644 index 000000000..ff9293be9 --- /dev/null +++ b/package/ndisc6/Makefile @@ -0,0 +1,45 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include ${ADK_TOPDIR}/rules.mk + +PKG_NAME:= ndisc6 +PKG_VERSION:= 1.0.2 +PKG_RELEASE:= 1 +PKG_HASH:= 6acec8a0cb9efa3ac98456f46c3016aeec0598b0c7557c95242b5228ad62ca7a +PKG_DESCR:= icmpv6 neighbour discovery tools +PKG_SECTION:= net/ipv6 +PKG_URL:= http://www.remlab.net/ +PKG_SITES:= http://www.remlab.net/files/ndisc6/ + +PKG_LIBC_DEPENDS:= uclibc-ng uclibc glibc + +PKG_SUBPKGS:= NDISC6 RDISC6 TCPTRACEROUTE6 +PKGSD_NDISC6:= icmpv6 neighbour discovery tool +PKGSD_RDISC6:= icmpv6 router discovery tool +PKGSD_TCPTRACEROUTE6:= lightweight ipv6 tcptraceroute + +DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2 + +include ${ADK_TOPDIR}/mk/package.mk + +$(eval $(call PKG_template,NDISC6,ndisc6,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_NDISC6},${PKG_SECTION})) +$(eval $(call PKG_template,RDISC6,rdisc6,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_RDISC6},${PKG_SECTION})) +$(eval $(call PKG_template,TCPTRACEROUTE6,tcptraceroute6,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_TCPTRACEROUTE6},${PKG_SECTION})) + +MAKE_FLAGS+= CC="${TARGET_CC}" + +ndisc6-install: + ${INSTALL_DIR} ${IDIR_NDISC6}/usr/bin + ${INSTALL_BIN} ${WRKINST}/usr/bin/ndisc6 ${IDIR_NDISC6}/usr/bin/ + +rdisc6-install: + ${INSTALL_DIR} ${IDIR_RDISC6}/usr/bin + ${INSTALL_BIN} ${WRKINST}/usr/bin/rdisc6 ${IDIR_RDISC6}/usr/bin/ + +tcptraceroute6-install: + ${INSTALL_DIR} ${IDIR_TCPTRACEROUTE6}/usr/bin + ${INSTALL_BIN} ${WRKINST}/usr/bin/tcptraceroute6 \ + ${IDIR_TCPTRACEROUTE6}/usr/bin/ + +include ${ADK_TOPDIR}/mk/pkg-bottom.mk diff --git a/package/ndisc6/patches/patch-rdnssd_Makefile_am b/package/ndisc6/patches/patch-rdnssd_Makefile_am new file mode 100644 index 000000000..932423ecd --- /dev/null +++ b/package/ndisc6/patches/patch-rdnssd_Makefile_am @@ -0,0 +1,13 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/rdnssd/Makefile.am 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/rdnssd/Makefile.am 2009-05-10 19:45:05.000000000 +0200 +@@ -27,7 +27,8 @@ conf_SCRIPTS = merge-hook + # rdnssd + rdnssd_SOURCES = rdnssd.c rdnssd.h \ + icmp.c \ +- netlink.c ++ netlink.c \ ++ strverscmp.c + rdnssd_LDADD = $(LIBRT) \ + @top_builddir@/compat/libcompat.a + diff --git a/package/ndisc6/patches/patch-rdnssd_Makefile_in b/package/ndisc6/patches/patch-rdnssd_Makefile_in new file mode 100644 index 000000000..125d20098 --- /dev/null +++ b/package/ndisc6/patches/patch-rdnssd_Makefile_in @@ -0,0 +1,30 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/rdnssd/Makefile.in 2008-05-01 14:52:45.000000000 +0200 ++++ ndisc6-0.9.8/rdnssd/Makefile.in 2009-05-10 19:45:05.000000000 +0200 +@@ -58,7 +58,7 @@ CONFIG_CLEAN_FILES = + am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(confdir)" + sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) + PROGRAMS = $(sbin_PROGRAMS) +-am_rdnssd_OBJECTS = rdnssd.$(OBJEXT) icmp.$(OBJEXT) netlink.$(OBJEXT) ++am_rdnssd_OBJECTS = rdnssd.$(OBJEXT) icmp.$(OBJEXT) netlink.$(OBJEXT) strverscmp.$(OBJEXT) + rdnssd_OBJECTS = $(am_rdnssd_OBJECTS) + am__DEPENDENCIES_1 = + rdnssd_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@@ -211,7 +211,8 @@ conf_SCRIPTS = merge-hook + # rdnssd + rdnssd_SOURCES = rdnssd.c rdnssd.h \ + icmp.c \ +- netlink.c ++ netlink.c \ ++ strverscmp.c + + rdnssd_LDADD = $(LIBRT) \ + @top_builddir@/compat/libcompat.a +@@ -334,6 +335,7 @@ distclean-compile: + + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icmp.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdnssd.Po@am__quote@ + + .c.o: diff --git a/package/ndisc6/patches/patch-rdnssd_icmp_c b/package/ndisc6/patches/patch-rdnssd_icmp_c new file mode 100644 index 000000000..78cbd8e43 --- /dev/null +++ b/package/ndisc6/patches/patch-rdnssd_icmp_c @@ -0,0 +1,20 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/rdnssd/icmp.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/rdnssd/icmp.c 2009-05-10 19:43:19.000000000 +0200 +@@ -47,6 +47,7 @@ + + static int icmp_recv (int fd) + { ++ struct cmsghdr *cmsg; + struct nd_router_advert icmp6; + uint8_t buf[65536 - sizeof (icmp6)], cbuf[CMSG_SPACE (sizeof (int))]; + struct iovec iov[2] = +@@ -74,7 +75,7 @@ static int icmp_recv (int fd) + || (icmp6.nd_ra_code != 0)) /* unknown ICMPv6 code */ + return -1; + +- for (struct cmsghdr *cmsg = CMSG_FIRSTHDR (&msg); ++ for (cmsg = CMSG_FIRSTHDR (&msg); + cmsg != NULL; + cmsg = CMSG_NXTHDR (&msg, cmsg)) + { diff --git a/package/ndisc6/patches/patch-rdnssd_rdnssd_c b/package/ndisc6/patches/patch-rdnssd_rdnssd_c new file mode 100644 index 000000000..48a261495 --- /dev/null +++ b/package/ndisc6/patches/patch-rdnssd_rdnssd_c @@ -0,0 +1,78 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/rdnssd/rdnssd.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/rdnssd/rdnssd.c 2009-05-10 19:42:36.000000000 +0200 +@@ -76,6 +76,7 @@ static struct + + static void write_resolv(const char *resolvpath) + { ++ size_t i; + FILE *resolv; + int rval; + char tmpfile[strlen(resolvpath) + sizeof(".tmp")]; +@@ -89,7 +90,7 @@ static void write_resolv(const char *res + return; + } + +- for (size_t i = 0; i < servers.count; i++) { ++ for (i = 0; i < servers.count; i++) { + char addr[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6, &servers.list[i].addr, addr, INET6_ADDRSTRLEN); + +@@ -132,6 +133,7 @@ static int rdnss_older (const void *a, c + static void rdnss_update (const struct in6_addr *addr, unsigned int ifindex, time_t expiry) + { + size_t i; ++ unsigned int j; + + /* Does this entry already exist? */ + for (i = 0; i < servers.count; i++) +@@ -165,12 +167,12 @@ static void rdnss_update (const struct i + qsort (servers.list, servers.count, sizeof (rdnss_t), rdnss_older); + + #ifndef NDEBUG +- for (unsigned i = 0; i < servers.count; i++) ++ for (j = 0; j < servers.count; j++) + { + char buf[INET6_ADDRSTRLEN]; +- inet_ntop (AF_INET6, &servers.list[i].addr, buf, ++ inet_ntop (AF_INET6, &servers.list[j].addr, buf, + sizeof (buf)); +- syslog (LOG_DEBUG, "%u: %48s expires at %u\n", i, buf, ++ syslog (LOG_DEBUG, "%u: %48s expires at %u\n", j, buf, + (unsigned)servers.list[i].expiry); + } + #endif +@@ -178,6 +180,7 @@ static void rdnss_update (const struct i + + int parse_nd_opts (const struct nd_opt_hdr *opt, size_t opts_len, unsigned int ifindex) + { ++ struct in6_addr *addr; + for (; opts_len >= sizeof(struct nd_opt_hdr); + opts_len -= opt->nd_opt_len << 3, + opt = (const struct nd_opt_hdr *) +@@ -206,7 +209,7 @@ int parse_nd_opts (const struct nd_opt_h + + lifetime = now + ntohl(rdnss_opt->nd_opt_rdnss_lifetime); + +- for (struct in6_addr *addr = (struct in6_addr *) (rdnss_opt + 1); ++ for (addr = (struct in6_addr *) (rdnss_opt + 1); + nd_opt_len >= 2; addr++, nd_opt_len -= 2) + rdnss_update(addr, ifindex, lifetime); + +@@ -255,6 +258,7 @@ static void ignore_handler (int signum) + + static int worker (int pipe, const char *resolvpath, const char *username) + { ++ bool ready; + sigset_t emptyset; + int rval = 0, sock = -1; + const rdnss_src_t *src; +@@ -283,7 +287,7 @@ static int worker (int pipe, const char + + sigemptyset (&emptyset); + +- for (bool ready = false; termsig == 0;) ++ for (ready = false; termsig == 0;) + { + struct pollfd pfd = + { .fd = sock, .events = POLLIN, .revents = 0 }; diff --git a/package/ndisc6/patches/patch-src_addrinfo_c b/package/ndisc6/patches/patch-src_addrinfo_c new file mode 100644 index 000000000..74dbe928d --- /dev/null +++ b/package/ndisc6/patches/patch-src_addrinfo_c @@ -0,0 +1,21 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/addrinfo.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/addrinfo.c 2009-05-10 19:14:46.000000000 +0200 +@@ -53,7 +53,7 @@ gai_perror (int errval, const char *msg) + static int + printnames (const char *name, int family, int aflags, int nflags, bool single) + { +- struct addrinfo hints, *res; ++ struct addrinfo hints, *res, *ptr; + + memset (&hints, 0, sizeof (hints)); + hints.ai_family = family; +@@ -67,7 +67,7 @@ printnames (const char *name, int family + return -1; + } + +- for (struct addrinfo *ptr = res; ptr != NULL; ptr = ptr->ai_next) ++ for (ptr = res; ptr != NULL; ptr = ptr->ai_next) + { + char hostname[NI_MAXHOST]; + diff --git a/package/ndisc6/patches/patch-src_ndisc_c b/package/ndisc6/patches/patch-src_ndisc_c new file mode 100644 index 000000000..af3abf1d3 --- /dev/null +++ b/package/ndisc6/patches/patch-src_ndisc_c @@ -0,0 +1,35 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/ndisc.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/ndisc.c 2009-05-10 19:16:53.000000000 +0200 +@@ -375,12 +375,13 @@ parseroute (const uint8_t *opt) + static int + parserdnss (const uint8_t *opt) + { ++ unsigned int i; + uint8_t optlen = opt[1]; + if (((optlen & 1) == 0) || (optlen < 3)) + return -1; + + optlen /= 2; +- for (unsigned i = 0; i < optlen; i++) ++ for (i = 0; i < optlen; i++) + { + char str[INET6_ADDRSTRLEN]; + +@@ -521,6 +522,7 @@ static ssize_t + recvfromLL (int fd, void *buf, size_t len, int flags, + struct sockaddr_in6 *addr) + { ++ struct cmsghdr *cmsg; + char cbuf[CMSG_SPACE (sizeof (int))]; + struct iovec iov = + { +@@ -542,7 +544,7 @@ recvfromLL (int fd, void *buf, size_t le + return val; + + /* ensures the hop limit is 255 */ +- for (struct cmsghdr *cmsg = CMSG_FIRSTHDR (&hdr); ++ for (cmsg = CMSG_FIRSTHDR (&hdr); + cmsg != NULL; + cmsg = CMSG_NXTHDR (&hdr, cmsg)) + { diff --git a/package/ndisc6/patches/patch-src_tcpspray_c b/package/ndisc6/patches/patch-src_tcpspray_c new file mode 100644 index 000000000..9ac8bad90 --- /dev/null +++ b/package/ndisc6/patches/patch-src_tcpspray_c @@ -0,0 +1,48 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/tcpspray.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/tcpspray.c 2009-05-10 19:13:52.000000000 +0200 +@@ -60,7 +60,7 @@ static unsigned verbose = 0; + + static int tcpconnect (const char *host, const char *serv) + { +- struct addrinfo hints, *res; ++ struct addrinfo hints, *res, *p; + + memset (&hints, 0, sizeof (hints)); + hints.ai_family = family; +@@ -78,7 +78,7 @@ static int tcpconnect (const char *host, + + val = -1; + +- for (struct addrinfo *p = res; (p != NULL) && (val == -1); p = p->ai_next) ++ for (p = res; (p != NULL) && (val == -1); p = p->ai_next) + { + val = socket (p->ai_family, p->ai_socktype, p->ai_protocol); + if (val == -1) +@@ -127,6 +127,8 @@ static int + tcpspray (const char *host, const char *serv, unsigned long n, size_t blen, + unsigned delay_us, const char *fillname, bool echo) + { ++ unsigned int i, j; ++ + if (serv == NULL) + serv = echo ? "echo" : "discard"; + +@@ -172,7 +174,7 @@ tcpspray (const char *host, const char * + switch (child) + { + case 0: +- for (unsigned i = 0; i < n; i++) ++ for (i = 0; i < n; i++) + { + ssize_t val = recv (fd, block, blen, MSG_WAITALL); + if (val != (ssize_t)blen) +@@ -208,7 +210,7 @@ tcpspray (const char *host, const char * + struct timespec start, end; + mono_gettime (&start); + +- for (unsigned i = 0; i < n; i++) ++ for (j = 0; j < n; j++) + { + ssize_t val = write (fd, block, blen); + if (val != (ssize_t)blen) diff --git a/package/ndisc6/patches/patch-src_tcptraceroute_c b/package/ndisc6/patches/patch-src_tcptraceroute_c new file mode 100644 index 000000000..584f46472 --- /dev/null +++ b/package/ndisc6/patches/patch-src_tcptraceroute_c @@ -0,0 +1,20 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/tcptraceroute.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/tcptraceroute.c 2009-05-10 19:15:28.000000000 +0200 +@@ -114,6 +114,7 @@ static const char bin_name[] = RLTRACERO + + int main (int argc, char *argv[]) + { ++ int i; + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); +@@ -130,7 +131,7 @@ int main (int argc, char *argv[]) + + /* Prepare big enough buffers */ + unsigned len = 0; +- for (int i = 1; i < argc; i++) ++ for (i = 1; i < argc; i++) + len += strlen (argv[i]); + + char optbuf[3 * len + argc], *buf = optbuf; diff --git a/package/ndisc6/patches/patch-src_trace-tcp_c b/package/ndisc6/patches/patch-src_trace-tcp_c new file mode 100644 index 000000000..071b6d437 --- /dev/null +++ b/package/ndisc6/patches/patch-src_trace-tcp_c @@ -0,0 +1,11 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/trace-tcp.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/trace-tcp.c 2009-05-10 19:38:11.000000000 +0200 +@@ -24,6 +24,7 @@ + + #undef _GNU_SOURCE + #define _BSD_SOURCE 1 ++#define __FAVOR_BSD 1 + + #include + #include diff --git a/package/ndisc6/patches/patch-src_trace-udp_c b/package/ndisc6/patches/patch-src_trace-udp_c new file mode 100644 index 000000000..5c8c52bb8 --- /dev/null +++ b/package/ndisc6/patches/patch-src_trace-udp_c @@ -0,0 +1,11 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/trace-udp.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/trace-udp.c 2009-05-10 19:38:18.000000000 +0200 +@@ -24,6 +24,7 @@ + + #undef _GNU_SOURCE + #define _BSD_SOURCE 1 ++#define __FAVOR_BSD 1 + + #include + #include diff --git a/package/ndisc6/patches/patch-src_traceroute_c b/package/ndisc6/patches/patch-src_traceroute_c new file mode 100644 index 000000000..c98acfc20 --- /dev/null +++ b/package/ndisc6/patches/patch-src_traceroute_c @@ -0,0 +1,128 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/traceroute.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/traceroute.c 2009-05-10 19:31:06.000000000 +0200 +@@ -149,6 +149,7 @@ static ssize_t + recv_payload (int fd, void *buf, size_t len, + struct sockaddr_in6 *addr, int *hlim) + { ++ struct cmsghdr *cmsg; + char cbuf[CMSG_SPACE (sizeof (int))]; + struct iovec iov = + { +@@ -170,7 +171,7 @@ recv_payload (int fd, void *buf, size_t + return val; + + /* ensures the hop limit is 255 */ +- for (struct cmsghdr *cmsg = CMSG_FIRSTHDR (&hdr); ++ for (cmsg = CMSG_FIRSTHDR (&hdr); + cmsg != NULL; + cmsg = CMSG_NXTHDR (&hdr, cmsg)) + if ((cmsg->cmsg_level == IPPROTO_IPV6) +@@ -625,14 +626,16 @@ static void + display (const tracetest_t *tab, unsigned min_ttl, unsigned max_ttl, + unsigned retries) + { +- for (unsigned ttl = min_ttl; ttl <= max_ttl; ttl++) ++ unsigned int ttl, col; ++ ++ for (ttl = min_ttl; ttl <= max_ttl; ttl++) + { + struct sockaddr_in6 hop = { .sin6_family = AF_UNSPEC }; + const tracetest_t *line = tab + retries * (ttl - min_ttl); + + printf ("%2d ", ttl); + +- for (unsigned col = 0; col < retries; col++) ++ for (col = 0; col < retries; col++) + { + const tracetest_t *test = line + col; + if (test->result == TRACE_TIMEOUT) +@@ -821,6 +824,7 @@ static void setup_socket (int fd) + + static int setsock_rth (int fd, int type, const char **segv, int segc) + { ++ int i; + uint8_t hdr[inet6_rth_space (type, segc)]; + inet6_rth_init (hdr, sizeof (hdr), type, segc); + +@@ -829,7 +833,7 @@ static int setsock_rth (int fd, int type + hints.ai_family = AF_INET6; + hints.ai_flags = AI_IDN; + +- for (int i = 0; i < segc; i++) ++ for (i = 0; i < segc; i++) + { + struct addrinfo *res; + +@@ -868,7 +872,8 @@ static struct + + static int prepare_sockets (void) + { +- for (unsigned i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) ++ unsigned int i; ++ for (i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) + { + protofd[i].fd = socket (AF_INET6, SOCK_RAW, protofd[i].protocol); + if (protofd[i].fd == -1) +@@ -883,8 +888,9 @@ static int prepare_sockets (void) + + static int get_socket (int protocol) + { ++ unsigned int i; + errno = EPROTONOSUPPORT; +- for (unsigned i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) ++ for (i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) + if (protofd[i].protocol == protocol) + { + int fd = protofd[i].fd; +@@ -902,7 +908,8 @@ static int get_socket (int protocol) + + static void drop_sockets (void) + { +- for (unsigned i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) ++ unsigned int i; ++ for (i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) + if (protofd[i].fd != -1) + close (protofd[i].fd); + } +@@ -914,6 +921,8 @@ traceroute (const char *dsthost, const c + unsigned timeout, unsigned delay, unsigned retries, + size_t packet_len, int min_ttl, int max_ttl) + { ++ unsigned int i, j, step, progress; ++ + /* Creates ICMPv6 socket to collect error packets */ + int icmpfd = get_socket (IPPROTO_ICMPV6); + if (icmpfd == -1) +@@ -1020,7 +1029,7 @@ traceroute (const char *dsthost, const c + .filter = f, + }; + +- for (unsigned i = 0; i < 4; i++) ++ for (i = 0; i < 4; i++) + { + /* A = icmp->ip6_dst.s6_addr32[i]; */ + pc->code = BPF_LD + BPF_W + BPF_ABS; +@@ -1076,7 +1085,7 @@ traceroute (const char *dsthost, const c + tracetest_t tab[(1 + max_ttl - min_ttl) * retries]; + memset (tab, 0, sizeof (tab)); + +- for (unsigned step = 1, progress = 0; ++ for (step = 1, progress = 0; + step < (1 + max_ttl - min_ttl) + retries; + step++) + { +@@ -1093,10 +1102,10 @@ traceroute (const char *dsthost, const c + mono_nanosleep (&delay_ts); + + /* Sends requests */ +- for (unsigned i = 0; i < retries; i++) ++ for (j = 0; j < retries; j++) + { +- int attempt = (retries - 1) - i; +- int hlim = min_ttl + step + i - retries; ++ int attempt = (retries - 1) - j; ++ int hlim = min_ttl + step + j - retries; + + if ((hlim > max_ttl) || (hlim < min_ttl)) + continue; diff --git a/package/ndisc6/patches/patch-src_traceroute_h b/package/ndisc6/patches/patch-src_traceroute_h new file mode 100644 index 000000000..d47efc0c3 --- /dev/null +++ b/package/ndisc6/patches/patch-src_traceroute_h @@ -0,0 +1,26 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/traceroute.h 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/traceroute.h 2009-05-10 19:23:51.000000000 +0200 +@@ -24,9 +24,9 @@ + typedef ssize_t (*trace_send_t) (int fd, unsigned ttl, unsigned n, + size_t plen, uint16_t port); + +-typedef ssize_t (*trace_parser_t) (const void *restrict data, size_t len, +- int *restrict ttl, +- unsigned *restrict n, uint16_t port); ++typedef ssize_t (*trace_parser_t) (const data, size_t len, ++ int ttl, ++ unsigned n, uint16_t port); + + typedef struct tracetype + { +@@ -34,7 +34,8 @@ typedef struct tracetype + int protocol; + int checksum_offset; + trace_send_t send_probe; +- trace_parser_t parse_resp, parse_err; ++ trace_parser_t parse_resp; ++ trace_parser_t parse_err; + } tracetype; + + # ifdef __cplusplus diff --git a/package/ndisc6/src/rdnssd/strverscmp.c b/package/ndisc6/src/rdnssd/strverscmp.c new file mode 100644 index 000000000..6276bca0f --- /dev/null +++ b/package/ndisc6/src/rdnssd/strverscmp.c @@ -0,0 +1,131 @@ +/* Compare strings while treating digits characters numerically. + Copyright (C) 1997, 2000, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jean-François Bignolles , 1997. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +/* states: S_N: normal, S_I: comparing integral part, S_F: comparing + fractional parts, S_Z: idem but with leading Zeroes only */ +#define S_N 0x0 +#define S_I 0x4 +#define S_F 0x8 +#define S_Z 0xC + +/* result_type: CMP: return diff; LEN: compare using len_diff/diff */ +#define CMP 2 +#define LEN 3 + + +/* ISDIGIT differs from isdigit, as follows: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + - It's typically faster. + POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to + ISDIGIT_LOCALE unless it's important to use the locale's definition + of `digit' even when the host does not conform to POSIX. */ +#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) + +#undef __strverscmp +#undef strverscmp + +#ifndef weak_alias +# define __strverscmp strverscmp +#endif + +/* Compare S1 and S2 as strings holding indices/version numbers, + returning less than, equal to or greater than zero if S1 is less than, + equal to or greater than S2 (for more info, see the texinfo doc). +*/ + +int +__strverscmp (const char *s1, const char *s2) +{ + const unsigned char *p1 = (const unsigned char *) s1; + const unsigned char *p2 = (const unsigned char *) s2; + unsigned char c1, c2; + int state; + int diff; + + /* Symbol(s) 0 [1-9] others (padding) + Transition (10) 0 (01) d (00) x (11) - */ + static const unsigned int next_state[] = + { + /* state x d 0 - */ + /* S_N */ S_N, S_I, S_Z, S_N, + /* S_I */ S_N, S_I, S_I, S_I, + /* S_F */ S_N, S_F, S_F, S_F, + /* S_Z */ S_N, S_F, S_Z, S_Z + }; + + static const int result_type[] = + { + /* state x/x x/d x/0 x/- d/x d/d d/0 d/- + 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */ + + /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, + CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, + /* S_I */ CMP, -1, -1, CMP, 1, LEN, LEN, CMP, + 1, LEN, LEN, CMP, CMP, CMP, CMP, CMP, + /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, + CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, + /* S_Z */ CMP, 1, 1, CMP, -1, CMP, CMP, CMP, + -1, CMP, CMP, CMP + }; + + if (p1 == p2) + return 0; + + c1 = *p1++; + c2 = *p2++; + /* Hint: '0' is a digit too. */ + state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0)); + + while ((diff = c1 - c2) == 0 && c1 != '\0') + { + state = next_state[state]; + c1 = *p1++; + c2 = *p2++; + state |= (c1 == '0') + (ISDIGIT (c1) != 0); + } + + state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))]; + + switch (state) + { + case CMP: + return diff; + + case LEN: + while (ISDIGIT (*p1++)) + if (!ISDIGIT (*p2++)) + return 1; + + return ISDIGIT (*p2) ? -1 : diff; + + default: + return state; + } +} +#ifdef weak_alias +weak_alias (__strverscmp, strverscmp) +#endif -- cgit v1.2.3