52 #include <netinet/icmp6.h>
53
54 #include <inet/common.h>
55 #include <inet/nd.h>
56 #include <inet/tunables.h>
57 #include <inet/mib2.h>
58 #include <inet/ip.h>
59 #include <inet/ip6.h>
60 #include <inet/ip_multi.h>
61 #include <inet/ip_ire.h>
62 #include <inet/ip_rts.h>
63 #include <inet/ip_ndp.h>
64 #include <inet/ip_if.h>
65 #include <inet/ip6_asp.h>
66 #include <inet/ipclassifier.h>
67 #include <inet/sctp_ip.h>
68
69 #include <sys/tsol/tndb.h>
70 #include <sys/tsol/tnet.h>
71
72 static in6_addr_t ipv6_ll_template =
73 {(uint32_t)V6_LINKLOCAL, 0x0, 0x0, 0x0};
74
75 static ipif_t *
76 ipif_lookup_interface_v6(const in6_addr_t *if_addr, const in6_addr_t *dst,
77 ip_stack_t *ipst);
78
79 static int ipif_add_ires_v6(ipif_t *, boolean_t);
80
81 /*
82 * This function is called when an application does not specify an interface
83 * to be used for multicast traffic. It calls ire_lookup_multi_v6() to look
84 * for an interface route for the specified multicast group. Doing
85 * this allows the administrator to add prefix routes for multicast to
86 * indicate which interface to be used for multicast traffic in the above
87 * scenario. The route could be for all multicast (ff00::/8), for a single
88 * multicast group (a /128 route) or anything in between. If there is no
89 * such multicast route, we just find any multicast capable interface and
90 * return it.
91 *
92 * We support MULTIRT and RTF_SETSRC on the multicast routes added to the
93 * unicast table. This is used by CGTP.
|
52 #include <netinet/icmp6.h>
53
54 #include <inet/common.h>
55 #include <inet/nd.h>
56 #include <inet/tunables.h>
57 #include <inet/mib2.h>
58 #include <inet/ip.h>
59 #include <inet/ip6.h>
60 #include <inet/ip_multi.h>
61 #include <inet/ip_ire.h>
62 #include <inet/ip_rts.h>
63 #include <inet/ip_ndp.h>
64 #include <inet/ip_if.h>
65 #include <inet/ip6_asp.h>
66 #include <inet/ipclassifier.h>
67 #include <inet/sctp_ip.h>
68
69 #include <sys/tsol/tndb.h>
70 #include <sys/tsol/tnet.h>
71
72 static in6_addr_t ipv6_ll_template = {
73 {{(uint32_t)V6_LINKLOCAL, 0x0, 0x0, 0x0}}};
74
75 static ipif_t *
76 ipif_lookup_interface_v6(const in6_addr_t *if_addr, const in6_addr_t *dst,
77 ip_stack_t *ipst);
78
79 static int ipif_add_ires_v6(ipif_t *, boolean_t);
80
81 /*
82 * This function is called when an application does not specify an interface
83 * to be used for multicast traffic. It calls ire_lookup_multi_v6() to look
84 * for an interface route for the specified multicast group. Doing
85 * this allows the administrator to add prefix routes for multicast to
86 * indicate which interface to be used for multicast traffic in the above
87 * scenario. The route could be for all multicast (ff00::/8), for a single
88 * multicast group (a /128 route) or anything in between. If there is no
89 * such multicast route, we just find any multicast capable interface and
90 * return it.
91 *
92 * We support MULTIRT and RTF_SETSRC on the multicast routes added to the
93 * unicast table. This is used by CGTP.
|