summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-02-10 19:33:58 +0000
committershin <shin@FreeBSD.org>2000-02-10 19:33:58 +0000
commita0c9aca93ba39577e7f36147df6ca979625e77b1 (patch)
treed3a3edccf39eec56f4023db238559dd635269554
parente8fb8c14b5967d573ac36aa8c3a6fc4ac98543fb (diff)
downloadFreeBSD-src-a0c9aca93ba39577e7f36147df6ca979625e77b1.zip
FreeBSD-src-a0c9aca93ba39577e7f36147df6ca979625e77b1.tar.gz
Forbid include of soem inet6 header files from wrong place
KAME put INET6 related stuff into sys/netinet6 dir, but IPv6 standard API(RFC2553) require following files to be under sys/netinet. netinet/ip6.h netinet/icmp6.h Now those header files just include each following files. netinet6/ip6.h netinet6/icmp6.h Also KAME has netinet6/in6.h for easy INET6 common defs sharing between different BSDs, but RFC2553 requires only netinet/in.h should be included from userland. So netinet/in.h also includes netinet6/in6.h inside. To keep apps portability, apps should not directly include above files from netinet6 dir. Ideally, all contents of, netinet6/ip6.h netinet6/icmp6.h netinet6/in6.h should be moved into netinet/ip6.h netinet/icmp6.h netinet/in.h but to avoid big changes in this stage, add some hack, that -Put some special macro define into those files under neitnet -Let files under netinet6 cause error if it is included from some apps, and, if the specifal macro define is not defined. (which should have been defined if files under netinet is included) -And let them print an error message which tells the correct name of the include file to be included. Also fix apps which includes invalid header files. Approved by: jkh Obtained from: KAME project
-rw-r--r--sys/netinet/icmp6.h2
-rw-r--r--sys/netinet/in.h2
-rw-r--r--sys/netinet/ip6.h2
-rw-r--r--sys/netinet6/icmp6.h4
-rw-r--r--sys/netinet6/in6.h4
-rw-r--r--sys/netinet6/ip6.h6
-rw-r--r--usr.sbin/rtadvd/config.c4
7 files changed, 22 insertions, 2 deletions
diff --git a/sys/netinet/icmp6.h b/sys/netinet/icmp6.h
index 6d418d6..7a3dbbd 100644
--- a/sys/netinet/icmp6.h
+++ b/sys/netinet/icmp6.h
@@ -32,6 +32,8 @@
#ifndef _NETINET_ICMP6_H_
#define _NETINET_ICMP6_H_
+#define __KAME_NETINET_ICMP6_H_INCLUDED_
#include <netinet6/icmp6.h>
+#undef __KAME_NETINET_ICMP6_H_INCLUDED_
#endif /* !_NETINET_ICMP6_H_ */
diff --git a/sys/netinet/in.h b/sys/netinet/in.h
index b18be00..adb9524 100644
--- a/sys/netinet/in.h
+++ b/sys/netinet/in.h
@@ -442,7 +442,9 @@ struct ip_mreq {
}
/* INET6 stuff */
+#define __KAME_NETINET_IN_H_INCLUDED_
#include <netinet6/in6.h>
+#undef __KAME_NETINET_IN_H_INCLUDED_
#ifdef _KERNEL
struct ifnet; struct mbuf; /* forward declarations for Standard C */
diff --git a/sys/netinet/ip6.h b/sys/netinet/ip6.h
index a0fe4c1..2c0297f 100644
--- a/sys/netinet/ip6.h
+++ b/sys/netinet/ip6.h
@@ -29,4 +29,6 @@
* $FreeBSD$
*/
+#define __KAME_NETINET_IP6_H_INCLUDED_
#include <netinet6/ip6.h>
+#undef __KAME_NETINET_IP6_H_INCLUDED_
diff --git a/sys/netinet6/icmp6.h b/sys/netinet6/icmp6.h
index c67e961..feb664e 100644
--- a/sys/netinet6/icmp6.h
+++ b/sys/netinet6/icmp6.h
@@ -67,6 +67,10 @@
#ifndef _NETINET6_ICMPV6_H_
#define _NETINET6_ICMPV6_H_
+#if !defined(_KERNEL) && !defined(__KAME_NETINET_ICMP6_H_INCLUDED_)
+#error "do not include netinet6/icmp6.h directly, include netinet/icmp6.h"
+#endif
+
#define ICMPV6_PLD_MAXLEN 1232 /* IPV6_MMTU - sizeof(struct ip6_hdr)
- sizeof(struct icmp6_hdr) */
diff --git a/sys/netinet6/in6.h b/sys/netinet6/in6.h
index 7ceaad4..dce0da2 100644
--- a/sys/netinet6/in6.h
+++ b/sys/netinet6/in6.h
@@ -66,6 +66,10 @@
#ifndef _NETINET6_IN6_H_
#define _NETINET6_IN6_H_
+#if !defined(_KERNEL) && !defined(__KAME_NETINET_IN_H_INCLUDED_)
+#error "do not include netinet6/in6.h directly, include netinet/in.h"
+#endif
+
#if !defined(_XOPEN_SOURCE)
#include <sys/queue.h>
#endif
diff --git a/sys/netinet6/ip6.h b/sys/netinet6/ip6.h
index 9ebd51e..9c609e7 100644
--- a/sys/netinet6/ip6.h
+++ b/sys/netinet6/ip6.h
@@ -67,6 +67,12 @@
#ifndef _NETINET6_IPV6_H_
#define _NETINET6_IPV6_H_
+#if !defined(_KERNEL) && !defined(__KAME_NETINET_IP6_H_INCLUDED_)
+#if 0 /* XXX: waiting for contrib/addrtoname.c fix */
+#error "do not include netinet6/ip6.h directly, include netinet/ip6.h"
+#endif
+#endif
+
/*
* Definition for internet protocol version 6.
* RFC 2460
diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c
index 3055161..0e5f80d 100644
--- a/usr.sbin/rtadvd/config.c
+++ b/usr.sbin/rtadvd/config.c
@@ -41,9 +41,9 @@
#include <netinet/in.h>
#include <netinet/in_var.h>
-#include <netinet6/ip6.h>
+#include <netinet/ip6.h>
#include <netinet6/ip6_var.h>
-#include <netinet6/icmp6.h>
+#include <netinet/icmp6.h>
#include <arpa/inet.h>
OpenPOWER on IntegriCloud