From: Roy Marples Date: Wed, 18 Feb 2015 20:09:57 +0000 (+0000) Subject: ipi6.ifiindex differes between OS's so have a cast function X-Git-Tag: v6.8.0~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab19bdf8ac251fcb28ee9944dddc9a533e0b6053;p=thirdparty%2Fdhcpcd.git ipi6.ifiindex differes between OS's so have a cast function --- diff --git a/dhcp6.c b/dhcp6.c index 5735fe18..8f232cfd 100644 --- a/dhcp6.c +++ b/dhcp6.c @@ -1127,7 +1127,7 @@ logsend: cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(pi)); memset(&pi, 0, sizeof(pi)); - pi.ipi6_ifindex = ifp->index; + pi.ipi6_ifindex = CAST_IPI6_IFINDEX(ifp->index); memcpy(CMSG_DATA(cm), &pi, sizeof(pi)); if (sendmsg(ctx->dhcp_fd, &ctx->sndhdr, 0) == -1) { diff --git a/ipv6.h b/ipv6.h index 7a4cca19..f0b3000a 100644 --- a/ipv6.h +++ b/ipv6.h @@ -186,6 +186,14 @@ struct ipv6_state { #define IP6BUFLEN (CMSG_SPACE(sizeof(struct in6_pktinfo)) + \ CMSG_SPACE(sizeof(int))) + +/* ipi6.ifiindex differes between OS's so have a cast function */ +#ifdef __linux__ +#define CAST_IPI6_IFINDEX(idx) (int)(idx) +#else +#define CAST_IPI6_IFINDEX(idx) (idx) +#endif + #ifdef INET6 struct ipv6_ctx { struct sockaddr_in6 from; @@ -205,9 +213,7 @@ struct ipv6_ctx { int dhcp_fd; }; -#endif -#ifdef INET6 struct ipv6_ctx *ipv6_init(struct dhcpcd_ctx *); ssize_t ipv6_printaddr(char *, size_t, const uint8_t *, const char *); int ipv6_makestableprivate(struct in6_addr *addr, diff --git a/ipv6nd.c b/ipv6nd.c index 257ec78b..236bcbbb 100644 --- a/ipv6nd.c +++ b/ipv6nd.c @@ -296,7 +296,7 @@ ipv6nd_sendrsprobe(void *arg) cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(pi)); memset(&pi, 0, sizeof(pi)); - pi.ipi6_ifindex = ifp->index; + pi.ipi6_ifindex = CAST_IPI6_IFINDEX(ifp->index); memcpy(CMSG_DATA(cm), &pi, sizeof(pi)); syslog(LOG_DEBUG, "%s: sending Router Solicitation", ifp->name);