What is the purpose of BURN_BRIDGES?
Sebastian Huber
sebastian.huber at embedded-brains.de
Thu Mar 28 12:46:02 UTC 2019
Hello,
I turned on BURN_BRIDGES in my global kernel configuration and now I get
undefined references, e.g.
/build/rtems/5/lib/gcc/powerpc-rtems5/7.4.0/../../../../powerpc-rtems5/bin/ld:
./libbsd.a(ip6_output.c.18.o): in function `_bsd_ip6_output':
/scratch/git-rtems-libbsd/build/powerpc-rtems5-qoriq_e6500_64-default/../../freebsd/sys/netinet6/ip6_output.c:548:
undefined reference to `_bsd_in6_selectroute_fib'
/build/rtems/5/lib/gcc/powerpc-rtems5/7.4.0/../../../../powerpc-rtems5/bin/ld:
./libbsd.a(nd6.c.18.o): in function `nd6_llinfo_timer':
/scratch/git-rtems-libbsd/build/powerpc-rtems5-qoriq_e6500_64-default/../../freebsd/sys/netinet6/nd6.c:881:
undefined reference to `_bsd_nd6_ns_output'
/build/rtems/5/lib/gcc/powerpc-rtems5/7.4.0/../../../../powerpc-rtems5/bin/ld:
./libbsd.a(nd6.c.18.o): in function `nd6_resolve_slow':
/scratch/git-rtems-libbsd/build/powerpc-rtems5-qoriq_e6500_64-default/../../freebsd/sys/netinet6/nd6.c:2461:
undefined reference to `_bsd_nd6_ns_output'
/build/rtems/5/lib/gcc/powerpc-rtems5/7.4.0/../../../../powerpc-rtems5/bin/ld:
./libbsd.a(nd6_nbr.c.18.o): in function `nd6_dad_ns_output':
/scratch/git-rtems-libbsd/build/powerpc-rtems5-qoriq_e6500_64-default/../../freebsd/sys/netinet6/nd6_nbr.c:1513:
undefined reference to `_bsd_nd6_ns_output'
This is because of (in6_src.c):
#ifndef BURN_BRIDGES
int
in6_selectroute_fib(struct sockaddr_in6 *dstsock, struct ip6_pktopts *opts,
struct ip6_moptions *mopts, struct route_in6 *ro,
struct ifnet **retifp, struct rtentry **retrt, u_int fibnum)
{
return (selectroute(dstsock, opts, mopts, ro, retifp,
retrt, 0, fibnum));
}
#endif
And (ip6_output.c):
int
ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
struct route_in6 *ro, int flags, struct ip6_moptions *im6o,
struct ifnet **ifpp, struct inpcb *inp)
{
...
if (ro->ro_lle)
LLE_FREE(ro->ro_lle); /* zeros ro_lle */
ro->ro_lle = NULL;
if (fwd_tag == NULL) {
bzero(&dst_sa, sizeof(dst_sa));
dst_sa.sin6_family = AF_INET6;
dst_sa.sin6_len = sizeof(dst_sa);
dst_sa.sin6_addr = ip6->ip6_dst;
}
error = in6_selectroute_fib(&dst_sa, opt, im6o, ro, &ifp,
&rt, fibnum);
if (error != 0) {
if (ifp != NULL)
in6_ifstat_inc(ifp, ifs6_out_discard);
goto bad;
}
No BURN_BRIDGES conditional compilation. Is this option supposed to
work? What is its purpose? I enabled it to get rid of some legacy stuff
in bpf.c.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the freebsd-hackers
mailing list