Date: Sun, 14 Jul 2002 11:58:46 -0700 From: Luigi Rizzo <rizzo@icir.org> To: arch@freebsd.org Subject: reintroduce handling of NULL route in ip_output() Message-ID: <20020714115846.C78146@iguana.icir.org>
next in thread | raw e-mail | index | archive | help
[discussion on -arch, Bcc to -net in case someone is interested there]
Hi,
I would like to reintroduce the ability to pass a NULL
route to p_output(), which has been possible up to rev.1.34 of
ip_output().
Making ip_output() unable to handle NULL routes only saved a single
"if (ro == NULL)" check, but caused the work of allocating/deallocating
the route to be replicated in multiple places in the clients of
ip_output(), and the way this is done is very inconsistent, sometimes
involving the use of static variables which (apart from potential
errors due to misuse) are a no-no if we ever want to go to fine-grained
locking in the network stack. See for example how the route to
ip_output is passed in
netinet/igmp.c
netinet/ip_mroute.c
netinet/ip_input.c
netinet/tcp_subr.c
at least in one place there is a "bug" (like resetting some fields
of an automatic variable right before exiting from the block).
Other usages look suspicious too.
My reason to re-allow NULL routes in ip_output() are:
* simplify the code in the callers by centralizing a common
function;
* make another step towards the removal of global variables in the
protocol stack;
Does any of you have strong and _motivated_ objections ?
thanks
luigi
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020714115846.C78146>
