freebsd-dev/lib/libc/net/Symbol.map
Bruce M Simpson 71498f308b Import rewrite of IPv4 socket multicast layer to support source-specific
and protocol-independent host mode multicast. The code is written to
accomodate IPv6, IGMPv3 and MLDv2 with only a little additional work.

This change only pertains to FreeBSD's use as a multicast end-station and
does not concern multicast routing; for an IGMPv3/MLDv2 router
implementation, consider the XORP project.

The work is based on Wilbert de Graaf's IGMPv3 code drop for FreeBSD 4.6,
which is available at: http://www.kloosterhof.com/wilbert/igmpv3.html

Summary
 * IPv4 multicast socket processing is now moved out of ip_output.c
   into a new module, in_mcast.c.
 * The in_mcast.c module implements the IPv4 legacy any-source API in
   terms of the protocol-independent source-specific API.
 * Source filters are lazy allocated as the common case does not use them.
   They are part of per inpcb state and are covered by the inpcb lock.
 * struct ip_mreqn is now supported to allow applications to specify
   multicast joins by interface index in the legacy IPv4 any-source API.
 * In UDP, an incoming multicast datagram only requires that the source
   port matches the 4-tuple if the socket was already bound by source port.
   An unbound socket SHOULD be able to receive multicasts sent from an
   ephemeral source port.
 * The UDP socket multicast filter mode defaults to exclusive, that is,
   sources present in the per-socket list will be blocked from delivery.
 * The RFC 3678 userland functions have been added to libc: setsourcefilter,
   getsourcefilter, setipv4sourcefilter, getipv4sourcefilter.
 * Definitions for IGMPv3 are merged but not yet used.
 * struct sockaddr_storage is now referenced from <netinet/in.h>. It
   is therefore defined there if not already declared in the same way
   as for the C99 types.
 * The RFC 1724 hack (specify 0.0.0.0/8 addresses to IP_MULTICAST_IF
   which are then interpreted as interface indexes) is now deprecated.
 * A patch for the Rhyolite.com routed in the FreeBSD base system
   is available in the -net archives. This only affects individuals
   running RIPv1 or RIPv2 via point-to-point and/or unnumbered interfaces.
 * Make IPv6 detach path similar to IPv4's in code flow; functionally same.
 * Bump __FreeBSD_version to 700048; see UPDATING.

This work was financially supported by another FreeBSD committer.

Obtained from:  p4://bms_netdev
Submitted by:   Wilbert de Graaf (original work)
Reviewed by:    rwatson (locking), silence from fenner,
		net@ (but with encouragement)
2007-06-12 16:24:56 +00:00

169 lines
2.7 KiB
Plaintext

/*
* $FreeBSD$
*/
FBSD_1.0 {
__b64_ntop;
__b64_pton;
ether_line;
ether_aton;
ether_aton_r;
ether_ntoa;
ether_ntoa_r;
ether_ntohost;
ether_hostton;
eui64_aton;
eui64_ntoa;
eui64_ntohost;
eui64_hostton;
gai_strerror;
freeaddrinfo;
getaddrinfo;
gethostent;
gethostent_r;
gethostbyname;
gethostbyname_r;
gethostbyname2;
gethostbyname2_r;
gethostbyaddr;
gethostbyaddr_r;
sethostent;
endhostent;
getifaddrs;
freeifaddrs;
getifmaddrs;
freeifmaddrs;
getnameinfo;
getnetent;
getnetent_r;
getnetbyname;
getnetbyname_r;
getnetbyaddr;
getnetbyaddr_r;
setnetent;
endnetent;
getprotobynumber;
getprotobynumber_r;
setprotoent;
endprotoent;
getprotoent;
getprotoent_r;
getprotobyname;
getprotobyname_r;
getservbyname;
getservbyname_r;
getservbyport;
getservbyport_r;
setservent;
endservent;
getservent;
getservent_r;
hesiod_init;
hesiod_end;
hesiod_to_bind;
hesiod_resolve;
hesiod_free_list;
hes_init;
hes_to_bind;
hes_resolve;
hes_error;
hes_free;
if_indextoname;
if_nameindex;
if_freenameindex;
if_nametoindex;
inet6_option_space;
inet6_option_init;
inet6_option_append;
inet6_option_alloc;
inet6_option_next;
inet6_option_find;
inet6_opt_init;
inet6_opt_append;
inet6_opt_finish;
inet6_opt_set_val;
inet6_opt_next;
inet6_opt_find;
inet6_opt_get_val;
link_addr;
link_ntoa;
getipnodebyname;
getipnodebyaddr;
freehostent;
__nsdefaultsrc;
_nsdbtaddsrc;
_nsdbtdump;
_nsdbtput;
nsdispatch;
rcmd;
rcmd_af;
rresvport;
rresvport_af;
ruserok;
iruserok;
iruserok_sa;
rcmdsh;
recv;
inet6_rthdr_space;
inet6_rthdr_init;
inet6_rthdr_add;
inet6_rthdr_lasthop;
inet6_rthdr_segments;
inet6_rthdr_getaddr;
inet6_rthdr_getflags;
inet6_rth_space;
inet6_rth_init;
inet6_rth_add;
inet6_rth_reverse;
inet6_rth_segments;
inet6_rth_getaddr;
send;
sockatmark;
in6addr_any;
in6addr_loopback;
in6addr_nodelocal_allnodes;
in6addr_linklocal_allnodes;
sctp_getaddrlen;
sctp_bindx;
sctp_connectx;
sctp_peeloff;
sctp_opt_info;
sctp_getpaddrs;
sctp_freepaddrs;
sctp_getladdrs;
sctp_freeladdrs;
sctp_sendmsg;
sctp_sendmsgx;
sctp_send;
sctp_sendx;
sctp_recvmsg;
setipv4sourcefilter;
getipv4sourcefilter;
getsourcefilter;
setsourcefilter;
};
FBSDprivate_1.0 {
_nsdispatch;
_nsyyerror; /* generated from nslexer.l */
_nsyylex; /* generated from nslexer.l */
_nsyyparse; /* generated from nsparser.y */
_nsyylineno; /* generated from nsparser.y */
__dns_getanswer;
__ivaliduser;
__ivaliduser_af;
__ivaliduser_sa;
__check_rhosts_file;
__rcmd_errstr;
__nss_compat_getgrnam_r;
__nss_compat_getgrgid_r;
__nss_compat_getgrent_r;
__nss_compat_setgrent;
__nss_compat_endgrent;
__nss_compat_getpwnam_r;
__nss_compat_getpwuid_r;
__nss_compat_getpwent_r;
__nss_compat_setpwent;
__nss_compat_endpwent;
};