]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
ipi6.ifiindex differes between OS's so have a cast function
authorRoy Marples <roy@marples.name>
Wed, 18 Feb 2015 20:09:57 +0000 (20:09 +0000)
committerRoy Marples <roy@marples.name>
Wed, 18 Feb 2015 20:09:57 +0000 (20:09 +0000)
dhcp6.c
ipv6.h
ipv6nd.c

diff --git a/dhcp6.c b/dhcp6.c
index 5735fe180a7f8631d7996827308c0886ebb5d757..8f232cfdf26b7b67d716cff595bea8ce26b8b843 100644 (file)
--- 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 7a4cca19579d9719f1bc606ba43e4eafe14d89a8..f0b3000a46d1cbe47db2fbce9c71bcdc635f197b 100644 (file)
--- 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,
index 257ec78b56d1f207825ef18827b04aac3ba13643..236bcbbb9bc5637c912030ac3d9b938e1445c4a0 100644 (file)
--- 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);