Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Sep 2001 12:27:52 +0900
From:      Keiichi SHIMA / =?ISO-2022-JP?B?GyRCRWc3RDBsGyhC?= <keiichi@iij.ad.jp>
To:        Julian Elischer <julian@elischer.org>, itojun@iijlab.net, net@FreeBSD.ORG, users@ipv6.org, core@kame.net
Subject:   Re: IPV6/KAME/protosw integration cleanup 
Message-ID:  <86ae0afhaf.wl@keiichi01.osaka.iij.ad.jp>
In-Reply-To: <87sne3y0bq.wl@keiichi00.osaka.iij.ad.jp>
References:  <28752.998915728@itojun.org> <86heutd3z1.wl@keiichi01.osaka.iij.ad.jp> <87sne3y0bq.wl@keiichi00.osaka.iij.ad.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
--Multipart_Wed_Sep__5_12:27:52_2001-1
Content-Type: text/plain; charset=US-ASCII

Hi all,

At first, I told a lie in one point,

> We had removed all the varargs input/output functions from the
> IPv4/IPv6 stacks of the KAME repositry.  These modifications will
> make

We removed all the varargs functions from the IPv4 stack (#ifdef'ed
for FreeBSD), but preserved for the IPv6 stack.  This is for our
inter-OS source code maintainancability.  We share all the IPv6 code
among the *BSDs.  Since we are developing the IPv6 stack actively now,
it is important for us to reduce the difference among several OSes.

Anyway, as we don't have any varargs input/output functions in FreeBSD
code any more, some of annoying warning messages have disappeared.

> it easier to import KAME code into FreeBSD4/5.  Now we are testing the
> code with KAME/FreeBSD4 and it looks OK.  I will soon make a patch for
> FreeBSD5 and post it to the related mailing lists for review.

Please look into the attached patch for FreeBSD-current.

---
Keiichi SHIMA <keiichi@iij.ad.jp>
IIJ Research Laboratory / KAME Project



--Multipart_Wed_Sep__5_12:27:52_2001-1
Content-Type: text/plain; type=patch; charset=US-ASCII
Content-Disposition: attachment; filename="varargs.diff"
Content-Transfer-Encoding: 7bit

diff -ur sys.orig/net/if_stf.c sys/net/if_stf.c
--- sys.orig/net/if_stf.c	Tue Sep  4 15:25:24 2001
+++ sys/net/if_stf.c	Wed Sep  5 10:22:33 2001
@@ -530,14 +530,11 @@
 }
 
 void
-#if __STDC__
-in_stf_input(struct mbuf *m, ...)
-#else
-in_stf_input(m, va_alist)
+in_stf_input(m, off)
 	struct mbuf *m;
-#endif
+	int off;
 {
-	int off, proto;
+	int proto;
 	struct stf_softc *sc;
 	struct ip *ip;
 	struct ip6_hdr *ip6;
@@ -545,12 +542,8 @@
 	int len, isr;
 	struct ifqueue *ifq = NULL;
 	struct ifnet *ifp;
-	va_list ap;
 
-	va_start(ap, m);
-	off = va_arg(ap, int);
 	proto = mtod(m, struct ip *)->ip_p;
-	va_end(ap);
 
 	if (proto != IPPROTO_IPV6) {
 		m_freem(m);
diff -ur sys.orig/net/if_stf.h sys/net/if_stf.h
--- sys.orig/net/if_stf.h	Wed Jul  5 01:35:04 2000
+++ sys/net/if_stf.h	Wed Sep  5 10:22:45 2001
@@ -33,6 +33,6 @@
 #ifndef _NET_IF_STF_H_
 #define _NET_IF_STF_H_
 
-void in_stf_input __P((struct mbuf *, ...));
+void in_stf_input __P((struct mbuf *, int));
 
 #endif /* _NET_IF_STF_H_ */
diff -ur sys.orig/netinet/ip_encap.c sys/netinet/ip_encap.c
--- sys.orig/netinet/ip_encap.c	Tue Sep  4 15:25:28 2001
+++ sys/netinet/ip_encap.c	Wed Sep  5 10:11:26 2001
@@ -127,25 +127,16 @@
 
 #ifdef INET
 void
-#if __STDC__
-encap4_input(struct mbuf *m, ...)
-#else
-encap4_input(m, va_alist)
+encap4_input(m, off)
 	struct mbuf *m;
-	va_dcl
-#endif
+	int off;
 {
-	int off, proto;
 	struct ip *ip;
+	int proto;
 	struct sockaddr_in s, d;
 	const struct protosw *psw;
 	struct encaptab *ep, *match;
-	va_list ap;
 	int prio, matchprio;
-
-	va_start(ap, m);
-	off = va_arg(ap, int);
-	va_end(ap);
 
 	ip = mtod(m, struct ip *);
 	proto = ip->ip_p;
diff -ur sys.orig/netinet/ip_encap.h sys/netinet/ip_encap.h
--- sys.orig/netinet/ip_encap.h	Wed Jul  5 01:35:05 2000
+++ sys/netinet/ip_encap.h	Tue Sep  4 15:51:33 2001
@@ -49,7 +49,7 @@
 };
 
 void	encap_init __P((void));
-void	encap4_input __P((struct mbuf *, ...));
+void	encap4_input __P((struct mbuf *, int));
 int	encap6_input __P((struct mbuf **, int *, int));
 const struct encaptab *encap_attach __P((int, int, const struct sockaddr *,
 	const struct sockaddr *, const struct sockaddr *,
diff -ur sys.orig/netinet6/ah.h sys/netinet6/ah.h
--- sys.orig/netinet6/ah.h	Mon Jun 11 21:39:03 2001
+++ sys/netinet6/ah.h	Wed Sep  5 10:08:12 2001
@@ -85,7 +85,7 @@
 extern int ah_hdrlen __P((struct secasvar *));
 
 extern size_t ah_hdrsiz __P((struct ipsecrequest *));
-extern void ah4_input __P((struct mbuf *, ...));
+extern void ah4_input __P((struct mbuf *, int));
 extern int ah4_output __P((struct mbuf *, struct ipsecrequest *));
 extern int ah4_calccksum __P((struct mbuf *, caddr_t, size_t,
 	const struct ah_algorithm *, struct secasvar *));
diff -ur sys.orig/netinet6/ah_input.c sys/netinet6/ah_input.c
--- sys.orig/netinet6/ah_input.c	Tue Sep  4 15:25:32 2001
+++ sys/netinet6/ah_input.c	Wed Sep  5 10:12:09 2001
@@ -97,13 +97,9 @@
 extern struct protosw inetsw[];
 
 void
-#if __STDC__
-ah4_input(struct mbuf *m, ...)
-#else
-ah4_input(m, va_alist)
+ah4_input(m, off)
 	struct mbuf *m;
-	va_dcl
-#endif
+	int off;
 {
 	struct ip *ip;
 	struct ah *ah;
@@ -115,15 +111,9 @@
 	struct secasvar *sav = NULL;
 	u_int16_t nxt;
 	size_t hlen;
-	int off, proto;
-	va_list ap;
+	int proto;
 	size_t stripsiz = 0;
 
-	va_start(ap, m);
-	off = va_arg(ap, int);
-	proto = mtod(m, struct ip *)->ip_p;
-	va_end(ap);
-
 #ifndef PULLDOWN_TEST
 	if (m->m_len < off + sizeof(struct newah)) {
 		m = m_pullup(m, off + sizeof(struct newah));
@@ -136,9 +126,11 @@
 	}
 
 	ip = mtod(m, struct ip *);
+	proto = ip->ip_p;
 	ah = (struct ah *)(((caddr_t)ip) + off);
 #else
 	ip = mtod(m, struct ip *);
+	proto = ip->ip_p;
 	IP6_EXTHDR_GET(ah, struct ah *, m, off, sizeof(struct newah));
 	if (ah == NULL) {
 		ipseclog((LOG_DEBUG, "IPv4 AH input: can't pullup;"
diff -ur sys.orig/netinet6/esp.h sys/netinet6/esp.h
--- sys.orig/netinet6/esp.h	Mon Jun 11 21:39:04 2001
+++ sys/netinet6/esp.h	Wed Sep  5 10:09:28 2001
@@ -98,7 +98,7 @@
 
 /* crypt routines */
 extern int esp4_output __P((struct mbuf *, struct ipsecrequest *));
-extern void esp4_input __P((struct mbuf *, ...));
+extern void esp4_input __P((struct mbuf *, int));
 extern size_t esp_hdrsiz __P((struct ipsecrequest *));
 
 extern int esp_schedule __P((const struct esp_algorithm *, struct secasvar *));
diff -ur sys.orig/netinet6/esp_input.c sys/netinet6/esp_input.c
--- sys.orig/netinet6/esp_input.c	Tue Sep  4 15:25:32 2001
+++ sys/netinet6/esp_input.c	Wed Sep  5 10:12:24 2001
@@ -100,13 +100,9 @@
 extern struct protosw inetsw[];
 
 void
-#if __STDC__
-esp4_input(struct mbuf *m, ...)
-#else
-esp4_input(m, va_alist)
+esp4_input(m, off)
 	struct mbuf *m;
-	va_dcl
-#endif
+	int off;
 {
 	struct ip *ip;
 	struct esp *esp;
@@ -119,13 +115,7 @@
 	int ivlen;
 	size_t hlen;
 	size_t esplen;
-	va_list ap;
-	int off, proto;
-
-	va_start(ap, m);
-	off = va_arg(ap, int);
-	proto = mtod(m, struct ip *)->ip_p;
-	va_end(ap);
+	int proto;
 
 	/* sanity check for alignment. */
 	if (off % 4 != 0 || m->m_pkthdr.len % 4 != 0) {
@@ -146,6 +136,7 @@
 	}
 
 	ip = mtod(m, struct ip *);
+	proto = ip->ip_p;
 	esp = (struct esp *)(((u_int8_t *)ip) + off);
 #ifdef _IP_VHL
 	hlen = IP_VHL_HL(ip->ip_vhl) << 2;
diff -ur sys.orig/netinet6/ipcomp.h sys/netinet6/ipcomp.h
--- sys.orig/netinet6/ipcomp.h	Mon Jun 11 21:39:06 2001
+++ sys/netinet6/ipcomp.h	Wed Sep  5 10:10:34 2001
@@ -64,7 +64,7 @@
 
 struct ipsecrequest;
 extern const struct ipcomp_algorithm *ipcomp_algorithm_lookup __P((int));
-extern void ipcomp4_input __P((struct mbuf *, ...));
+extern void ipcomp4_input __P((struct mbuf *, int));
 extern int ipcomp4_output __P((struct mbuf *, struct ipsecrequest *));
 #endif /*KERNEL*/
 
diff -ur sys.orig/netinet6/ipcomp_input.c sys/netinet6/ipcomp_input.c
--- sys.orig/netinet6/ipcomp_input.c	Tue Sep  4 15:25:32 2001
+++ sys/netinet6/ipcomp_input.c	Wed Sep  5 10:10:24 2001
@@ -86,13 +86,9 @@
 extern struct protosw inetsw[];
 
 void
-#if __STDC__
-ipcomp4_input(struct mbuf *m, ...)
-#else
-ipcomp4_input(m, va_alist)
+ipcomp4_input(m, off)
 	struct mbuf *m;
-	va_dcl
-#endif
+	int off;
 {
 	struct mbuf *md;
 	struct ip *ip;
@@ -104,13 +100,7 @@
 	int error;
 	size_t newlen, olen;
 	struct secasvar *sav = NULL;
-	int off, proto;
-	va_list ap;
-
-	va_start(ap, m);
-	off = va_arg(ap, int);
-	proto = mtod(m, struct ip *)->ip_p;
-	va_end(ap);
+	int proto;
 
 	if (m->m_pkthdr.len < off + sizeof(struct ipcomp)) {
 		ipseclog((LOG_DEBUG, "IPv4 IPComp input: assumption failed "
@@ -129,6 +119,7 @@
 	}
 	ipcomp = mtod(md, struct ipcomp *);
 	ip = mtod(m, struct ip *);
+	proto = ip->ip_p;
 	nxt = ipcomp->comp_nxt;
 #ifdef _IP_VHL
 	hlen = IP_VHL_HL(ip->ip_vhl) << 2;

--Multipart_Wed_Sep__5_12:27:52_2001-1--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86ae0afhaf.wl>