Date: Sun, 12 Aug 2001 13:25:22 -0700 From: Julian Elischer <julian@elischer.org> To: Jun-ichiro itojun Hagino <itojun@iijlab.net> Cc: net@freebsd.org Subject: Re: IPV6/KAME/protosw integration cleanup Message-ID: <3B76E632.28BE644@elischer.org> References: <20010812201530.DBF2D7BB@starfruit.itojun.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Jun-ichiro itojun Hagino wrote: > > >Well what is there now is plainly unacceptable > >I think that it was asked for as a VERY SHORT TERM hack. > >But it has been there a long time... > >I see no reasons so far to not make most of these changes.. > > well, you are ignoging our design decisions. they are all done > for reasons. no, I just disagree about some of them. > > >1/ removal of "control" argument from rip6_input and prepend control mbuf > >to chain AS IT WAS DESIGNED FOR. This makes rip6_input conform to the proto > >type for input. (I have not confirmed that the information in control > >is a valid mbuf but it is an mbuf pointer). > > i don't see any "control" argument in rip6_input in kame tree, as well > as freebsd sys/netinet6/raw_ip6.c revision 1.12. which revision > are you looking at? Sorry, wrong function.. it was output.... here is the fix @@ -295,16 +295,12 @@ * Tack on options user may have setup with control call. */ int -#if __STDC__ -rip6_output(struct mbuf *m, ...) -#else -rip6_output(m, va_alist) +rip6_output(m, so, sockaddr) struct mbuf *m; - va_dcl -#endif -{ struct socket *so; - struct sockaddr_in6 *dstsock; + struct sockaddr *sockaddr; +{ + struct sockaddr_in6 *dstsock = (struct sockaddr_in6 *)sockaddr; struct mbuf *control; struct in6_addr *dst; struct ip6_hdr *ip6; @@ -315,14 +311,12 @@ struct ifnet *oifp = NULL; int type = 0, code = 0; /* for ICMPv6 output statistics only */ int priv = 0; - va_list ap; - - va_start(ap, m); - so = va_arg(ap, struct socket *); - dstsock = va_arg(ap, struct sockaddr_in6 *); - control = va_arg(ap, struct mbuf *); - va_end(ap); + if (m->m_type == MT_CONTROL) { + control = m; + m = m->m_next; + } else + control = NULL; in6p = sotoin6pcb(so); priv = 0; @@ -718,7 +712,11 @@ > >2/ remove all var-args.. This is a disgusting hach that makes it impossible > >for the compiler to catch mismatched functions and arguments. > >NetBSD should know better than this.. they changed it.. they can bear the costs > >of compatibility.. we are NOT going to do that. > >3/ define all prototypes in terms of predefined types to allow > >the compiler to catch wrong assignments quicker (or to change them quicker). > >(this was planned a long time ago but not done for reasons I forget) > > i can partially buy this, but for *BSD code sharing, i do need a > compromise here. permit us to use varargs. > no. it can be in the netbsd compatibility code. it's going away. > >4/ Addition of the "proto" field to output to allow ipprotosw to be completely > >removed. (the special type for that filed need not be done as I only did that > >to ensure that KAME was not using it somewhere to pass something OTHER than > >an proto type.) (other protocols can ignore this field). > > no you can't remove "proto" argument from the argument list. > because of the way ipv6 extension header chain (and IPv4 AH/ESP > header) is designed, proto argument has to be passed around, otherwise > we can't know which protocol we are processing (think of raw ip header > processing, like rip_input). I din't say remove.. I said ADD. > > itojun -- +------------------------------------+ ______ _ __ | __--_|\ Julian Elischer | \ U \/ / hard at work in | / \ julian@elischer.org +------>x USA \ a very strange | ( OZ ) \___ ___ | country ! +- X_.---._/ presently in San Francisco \_/ \\ v 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?3B76E632.28BE644>