This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: Re: Disable IPv6 at startup?
- From: Sergei Gavrikov <sergei dot gavrikov at gmail dot com>
- To: Grant Edwards <grant dot b dot edwards at gmail dot com>
- Cc: ecos-discuss at sources dot redhat dot com
- Date: Thu, 1 Mar 2012 20:24:25 +0300 (FET)
- Subject: Re: [ECOS] Re: Disable IPv6 at startup?
- Authentication-results: mr.google.com; spf=pass (google.com: domain of sergei.gavrikov@gmail.com designates 10.213.26.156 as permitted sender) smtp.mail=sergei.gavrikov@gmail.com; dkim=pass header.i=sergei.gavrikov@gmail.com
- References: <jhjnjr$eo8$1@dough.gmane.org> <jiloui$bp7$1@dough.gmane.org> <jim732$s9l$1@dough.gmane.org> <alpine.DEB.2.00.1203011457410.15373@sg-pc.belvok.com> <jio1fi$fj8$2@dough.gmane.org>
On Thu, 1 Mar 2012, Grant Edwards wrote:
> On 2012-03-01, Sergei Gavrikov wrote:
> > On Wed, 29 Feb 2012, Grant Edwards wrote:
> >
> > [snip]
> >
> >> OK, I've come up with something I like a little better. The only
> >> change it requires to the network stack is that ip6_init2() needs to
> >> be globally visible (ip6_init already is, so I don't see the harm in
> >> making ip6_init2 visible). If ip6_init2 is visible, then you can
> >> disable ipv6 support with this code:
> >>
> >> static void init_noop(void* dummy)
> >> {
> >> }
> >>
> >> static void disable_ipv6(void)
> >> {
> >> extern void cyg_net_add_domain(void *);
> >> extern void ip6_init2(void *);
> >> extern char inet6domain[];
> >> extern struct init_tab_entry __NET_INIT_TAB__[], __NET_INIT_TAB_END__;
> >> struct init_tab_entry *init_entry;
> >>
> >> for (init_entry = __NET_INIT_TAB__; init_entry != &__NET_INIT_TAB_END__; init_entry++)
> >> if ((init_entry->fun == cyg_net_add_domain && init_entry->data == (void*)inet6domain) ||
> >> (init_entry->fun == ip6_init2))
> >> init_entry->fun = init_noop;
> >> }
>
> In case anybody is wondering, ip6_init() is called via the domain
> startup code via a pointer that's present in the "struct domain"
> initializer for inet6domain. Disabling the call to
> cyg_net_add_domain(&inet6domain) as shown above is what prevents
> ip6_init() from being called.
>
> > IMHO, it is neat solution. Thanks for usage example. BTW, the KAME's
> > successors had declared ip6_init2() as you suggest:
> >
> > http://ftp.fr.openbsd.org/pub/OpenBSD/src/sys/netinet6/ip6_input.c
> >
> > Please, submit the patch.
>
> OK, will do. I noticed after that last post that ip6_init is renamed
> to cyg_ip6_init by one of the include files.
Yes, I'm seeing that was entered in a merge/fix patch from Kelvin Lawson
in 2011. But there is also
include/sys/param.h:224:#define ip6_init cyg_ip6_init
> I assume I should do the same thing for ip6_init2 if it's going to be
> global?
I have doubt. May be to change a scope of the function in ip6_input.c
will be enough for the case? As for me I would not propagate the
definition {cyg_,}ip6_init2 in the headers. Though, may be I wrong
here. I would stop on your first proposal:
-static void ...
+void ...
Sergei
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss