Date: Mon, 6 Mar 1995 11:30:58 +1000 From: Bruce Evans <bde@zeta.org.au> To: gibbs@estienne.CS.Berkeley.EDU, nate@sneezy.sri.com Cc: current@FreeBSD.org Subject: Re: Kernel build fails? Message-ID: <199503060130.LAA09193@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>I fixed these two by doing something like this:
>#ifdef TCPOUTFLAGS
>/*
> * Flags used when sending segments in tcp_output.
> * Basic flags (TH_RST,TH_ACK,TH_SYN,TH_FIN) are totally
> * determined by state, with the proviso that TH_FIN is sent only
> * if all data queued for output is included in the segment.
> */
>u_char tcp_outflags[TCP_NSTATES] = {
> TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK,
> TH_ACK, TH_ACK,
> TH_FIN|TH_ACK, TH_ACK, TH_FIN|TH_ACK, TH_ACK, TH_ACK,
>};
>#else <=== Added this section.
>extern u_char tcp_outflags[];
>#endif
>And then removing TCPOUTFLAGS from tcp_subr.c. If this is the correct
>approach, there are other places (for example in tcp_fsm.h) that need
>this treatment.
An initializer in a header file is usually an incorrect approach. I like
the approach of #defining the initializer _list_ in a header file:
#define TCP_OUTFLAGS TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK, \
TH_ACK, TH_ACK, \
TH_FIN|TH_ACK, TH_ACK, TH_FIN|TH_ACK, TH_ACK, TH_ACK,
and using it exactly once, except I don't like extern data being accessed
from many modules (that's why I just made the data static to handle the
problem with ttydefchars in 1.1.5).
Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199503060130.LAA09193>
