summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2010-04-27 09:47:14 +0000
committerkib <kib@FreeBSD.org>2010-04-27 09:47:14 +0000
commit85688162953c4cf38c355bcc60c0ab181a3bfa2e (patch)
tree2fb5932b6c6480fef21b398b9810f7c567c4ba65 /sys/netinet6
parent7eb24f6aa6071a123dd0d24f5e8806cf803305fa (diff)
downloadFreeBSD-src-85688162953c4cf38c355bcc60c0ab181a3bfa2e.zip
FreeBSD-src-85688162953c4cf38c355bcc60c0ab181a3bfa2e.tar.gz
Provide 32bit compat for SIOCGDEFIFACE_IN6.
Based on submission by: pluknet gmail com Reviewed by: emaste MFC after: 2 weeks
Diffstat (limited to 'sys/netinet6')
-rw-r--r--sys/netinet6/in6.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 74c15d5..15ff6b2 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -63,6 +63,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include "opt_compat.h"
#include "opt_inet.h"
#include "opt_inet6.h"
@@ -176,6 +177,14 @@ in6_mask2len(struct in6_addr *mask, u_char *lim0)
#define ifa2ia6(ifa) ((struct in6_ifaddr *)(ifa))
#define ia62ifa(ia6) (&((ia6)->ia_ifa))
+#ifdef COMPAT_FREEBSD32
+struct in6_ndifreq32 {
+ char ifname[IFNAMSIZ];
+ uint32_t ifindex;
+};
+#define SIOCGDEFIFACE32_IN6 _IOWR('i', 86, struct in6_ndifreq32)
+#endif
+
int
in6_control(struct socket *so, u_long cmd, caddr_t data,
struct ifnet *ifp, struct thread *td)
@@ -226,6 +235,22 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
case SIOCGNBRINFO_IN6:
case SIOCGDEFIFACE_IN6:
return (nd6_ioctl(cmd, data, ifp));
+
+#ifdef COMPAT_FREEBSD32
+ case SIOCGDEFIFACE32_IN6:
+ {
+ struct in6_ndifreq ndif;
+ struct in6_ndifreq32 *ndif32;
+
+ error = nd6_ioctl(SIOCGDEFIFACE_IN6, (caddr_t)&ndif,
+ ifp);
+ if (error)
+ return (error);
+ ndif32 = (struct in6_ndifreq32 *)data;
+ ndif32->ifindex = ndif.ifindex;
+ return (0);
+ }
+#endif
}
switch (cmd) {
OpenPOWER on IntegriCloud