iPXE
|
IPv6 protocol. More...
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <errno.h>
#include <assert.h>
#include <byteswap.h>
#include <ipxe/iobuf.h>
#include <ipxe/tcpip.h>
#include <ipxe/if_ether.h>
#include <ipxe/crc32.h>
#include <ipxe/fragment.h>
#include <ipxe/ipstat.h>
#include <ipxe/ndp.h>
#include <ipxe/ipv6.h>
Go to the source code of this file.
Macros | |
#define | EINVAL_LEN __einfo_error ( EINFO_EINVAL_LEN ) |
#define | EINFO_EINVAL_LEN __einfo_uniqify ( EINFO_EINVAL, 0x01, "Invalid length" ) |
#define | ENOTSUP_VER __einfo_error ( EINFO_ENOTSUP_VER ) |
#define | EINFO_ENOTSUP_VER __einfo_uniqify ( EINFO_ENOTSUP, 0x01, "Unsupported version" ) |
#define | ENOTSUP_HDR __einfo_error ( EINFO_ENOTSUP_HDR ) |
#define | EINFO_ENOTSUP_HDR __einfo_uniqify ( EINFO_ENOTSUP, 0x02, "Unsupported header type" ) |
#define | ENOTSUP_OPT __einfo_error ( EINFO_ENOTSUP_OPT ) |
#define | EINFO_ENOTSUP_OPT __einfo_uniqify ( EINFO_ENOTSUP, 0x03, "Unsupported option" ) |
Functions | |
FILE_LICENCE (GPL2_OR_LATER) | |
struct ip_statistics_family ipv6_statistics_family | __ip_statistics_family (IP_STATISTICS_IPV6) |
IPv6 statistics family. More... | |
static uint32_t | ipv6col (struct in6_addr *in) |
Determine debugging colour for IPv6 debug messages. More... | |
static unsigned int | ipv6_scope (const struct in6_addr *addr) |
Determine IPv6 address scope. More... | |
static void | ipv6_dump_miniroute (struct ipv6_miniroute *miniroute) |
Dump IPv6 routing table entry. More... | |
int | ipv6_has_addr (struct net_device *netdev, struct in6_addr *addr) |
Check if network device has a specific IPv6 address. More... | |
static unsigned int | ipv6_match_len (struct ipv6_miniroute *miniroute, struct in6_addr *address) |
Count matching bits of an IPv6 routing table entry prefix. More... | |
static struct ipv6_miniroute * | ipv6_miniroute (struct net_device *netdev, struct in6_addr *address) |
Find IPv6 routing table entry for a given address. More... | |
int | ipv6_add_miniroute (struct net_device *netdev, struct in6_addr *address, unsigned int prefix_len, struct in6_addr *router) |
Add IPv6 routing table entry. More... | |
void | ipv6_del_miniroute (struct ipv6_miniroute *miniroute) |
Delete IPv6 minirouting table entry. More... | |
struct ipv6_miniroute * | ipv6_route (unsigned int scope_id, struct in6_addr **dest) |
Perform IPv6 routing. More... | |
static struct net_device * | ipv6_netdev (struct sockaddr_tcpip *st_dest) |
Determine transmitting network device. More... | |
static int | ipv6_check_options (struct ipv6_header *iphdr, struct ipv6_options_header *options, size_t len) |
Check that received options can be safely ignored. More... | |
static int | ipv6_is_fragment (struct fragment *fragment, struct io_buffer *iobuf, size_t hdrlen) |
Check if fragment matches fragment reassembly buffer. More... | |
static size_t | ipv6_fragment_offset (struct io_buffer *iobuf, size_t hdrlen) |
Get fragment offset. More... | |
static int | ipv6_more_fragments (struct io_buffer *iobuf, size_t hdrlen) |
Check if more fragments exist. More... | |
static uint16_t | ipv6_pshdr_chksum (struct ipv6_header *iphdr, size_t len, int next_header, uint16_t csum) |
Calculate IPv6 pseudo-header checksum. More... | |
static int | ipv6_tx (struct io_buffer *iobuf, struct tcpip_protocol *tcpip_protocol, struct sockaddr_tcpip *st_src, struct sockaddr_tcpip *st_dest, struct net_device *netdev, uint16_t *trans_csum) |
Transmit IPv6 packet. More... | |
static int | ipv6_rx (struct io_buffer *iobuf, struct net_device *netdev, const void *ll_dest __unused, const void *ll_source __unused, unsigned int flags __unused) |
Process incoming IPv6 packets. More... | |
int | inet6_aton (const char *string, struct in6_addr *in) |
Parse IPv6 address. More... | |
char * | inet6_ntoa (const struct in6_addr *in) |
Convert IPv6 address to standard notation. More... | |
static const char * | ipv6_ntoa (const void *net_addr) |
Transcribe IPv6 address. More... | |
static const char * | ipv6_sock_ntoa (struct sockaddr *sa) |
Transcribe IPv6 socket address. More... | |
static int | ipv6_sock_aton (const char *string, struct sockaddr *sa) |
Parse IPv6 socket address. More... | |
int | parse_ipv6_setting (const struct setting_type *type __unused, const char *value, void *buf, size_t len) |
Parse IPv6 address setting value. More... | |
int | format_ipv6_setting (const struct setting_type *type __unused, const void *raw, size_t raw_len, char *buf, size_t len) |
Format IPv6 address setting value. More... | |
const struct setting ip6_setting | __setting (SETTING_IP6, ip6) |
IPv6 address setting. More... | |
const struct setting len6_setting | __setting (SETTING_IP6, len6) |
IPv6 prefix length setting. More... | |
const struct setting gateway6_setting | __setting (SETTING_IP6, gateway6) |
Default gateway setting. More... | |
static int | ipv6_applies (struct settings *settings __unused, const struct setting *setting) |
Check applicability of IPv6 link-local address setting. More... | |
static int | ipv6_fetch (struct settings *settings, struct setting *setting, void *data, size_t len) |
Fetch IPv6 link-local address setting. More... | |
static int | ipv6_register_settings (struct net_device *netdev, void *priv) |
Register IPv6 link-local address settings. More... | |
static int | ipv6_create_routes (struct net_device *netdev, struct settings *settings) |
Create IPv6 routing table based on configured settings. More... | |
static int | ipv6_create_all_routes (void) |
Create IPv6 routing table based on configured settings. More... | |
REQUIRING_SYMBOL (ipv6_protocol) | |
REQUIRE_OBJECT (icmpv6) | |
REQUIRE_OBJECT (ndp) | |
Variables | |
struct list_head | ipv6_miniroutes = LIST_HEAD_INIT ( ipv6_miniroutes ) |
List of IPv6 miniroutes. More... | |
static struct ip_statistics | ipv6_stats |
IPv6 statistics. More... | |
static struct fragment_reassembler | ipv6_reassembler |
Fragment reassembler. More... | |
struct net_protocol ipv6_protocol | __net_protocol |
IPv6 protocol. More... | |
struct tcpip_net_protocol ipv6_tcpip_protocol | __tcpip_net_protocol |
IPv6 TCPIP net protocol. More... | |
struct sockaddr_converter ipv6_sockaddr_converter | __sockaddr_converter |
IPv6 socket address converter. More... | |
const struct settings_scope | ipv6_settings_scope |
IPv6 settings scope. More... | |
static struct settings_operations | ipv6_settings_operations |
IPv6 link-local address settings operations. More... | |
struct net_driver ipv6_driver | __net_driver |
IPv6 network device driver. More... | |
struct settings_applicator ipv6_settings_applicator | __settings_applicator |
IPv6 settings applicator. More... | |
IPv6 protocol.
Definition in file ipv6.c.
#define EINVAL_LEN __einfo_error ( EINFO_EINVAL_LEN ) |
#define EINFO_EINVAL_LEN __einfo_uniqify ( EINFO_EINVAL, 0x01, "Invalid length" ) |
#define ENOTSUP_VER __einfo_error ( EINFO_ENOTSUP_VER ) |
#define EINFO_ENOTSUP_VER __einfo_uniqify ( EINFO_ENOTSUP, 0x01, "Unsupported version" ) |
#define ENOTSUP_HDR __einfo_error ( EINFO_ENOTSUP_HDR ) |
#define EINFO_ENOTSUP_HDR __einfo_uniqify ( EINFO_ENOTSUP, 0x02, "Unsupported header type" ) |
#define ENOTSUP_OPT __einfo_error ( EINFO_ENOTSUP_OPT ) |
#define EINFO_ENOTSUP_OPT __einfo_uniqify ( EINFO_ENOTSUP, 0x03, "Unsupported option" ) |
FILE_LICENCE | ( | GPL2_OR_LATER | ) |
struct ip_statistics_family ipv6_statistics_family __ip_statistics_family | ( | IP_STATISTICS_IPV6 | ) |
IPv6 statistics family.
Determine debugging colour for IPv6 debug messages.
in | IPv6 address |
col | Debugging colour (for DBGC()) |
Definition at line 78 of file ipv6.c.
References crc32_le(), and in.
Referenced by ipv6_check_options(), ipv6_rx(), and ipv6_tx().
|
static |
Determine IPv6 address scope.
addr | IPv6 address |
scope | Address scope |
Definition at line 88 of file ipv6.c.
References addr, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_MULTICAST, IN6_IS_ADDR_SITELOCAL, IN6_IS_ADDR_ULA, ipv6_multicast_scope(), IPV6_SCOPE_GLOBAL, IPV6_SCOPE_LINK_LOCAL, IPV6_SCOPE_ORGANISATION_LOCAL, and IPV6_SCOPE_SITE_LOCAL.
Referenced by ipv6_add_miniroute(), and ipv6_route().
|
inlinestatic |
Dump IPv6 routing table entry.
miniroute | Routing table entry |
Definition at line 122 of file ipv6.c.
References ipv6_miniroute::address, DBGC, ipv6_miniroute::flags, inet6_ntoa(), IPV6_HAS_ADDRESS, IPV6_HAS_ROUTER, net_device::name, netdev, ipv6_miniroute::netdev, ipv6_miniroute::prefix_len, and ipv6_miniroute::router.
Referenced by ipv6_add_miniroute().
int ipv6_has_addr | ( | struct net_device * | netdev, |
struct in6_addr * | addr | ||
) |
Check if network device has a specific IPv6 address.
netdev | Network device |
addr | IPv6 address |
has_addr | Network device has this IPv6 address |
Definition at line 141 of file ipv6.c.
References addr, ipv6_miniroute::address, ipv6_miniroute::flags, IPV6_HAS_ADDRESS, ipv6_miniroutes, ipv6_miniroute::list, list_for_each_entry, memcmp(), netdev, and ipv6_miniroute::netdev.
Referenced by ipv6_rx(), and ndp_rx_neighbour_solicitation_ll_source().
|
static |
Count matching bits of an IPv6 routing table entry prefix.
miniroute | Routing table entry |
address | IPv6 address |
match_len | Number of matching prefix bits |
Definition at line 163 of file ipv6.c.
References address, ipv6_miniroute::address, flsl, ntohl, and ipv6_miniroute::prefix_mask.
Referenced by ipv6_miniroute(), and ipv6_route().
|
static |
Find IPv6 routing table entry for a given address.
netdev | Network device |
address | IPv6 address |
miniroute | Routing table entry, or NULL if not found |
Definition at line 192 of file ipv6.c.
References address, ipv6_match_len(), ipv6_miniroutes, ipv6_miniroute::list, list_for_each_entry, netdev, ipv6_miniroute::netdev, NULL, and ipv6_miniroute::prefix_len.
Referenced by ipv6_add_miniroute().
int ipv6_add_miniroute | ( | struct net_device * | netdev, |
struct in6_addr * | address, | ||
unsigned int | prefix_len, | ||
struct in6_addr * | router | ||
) |
Add IPv6 routing table entry.
netdev | Network device |
address | IPv6 address (or prefix) |
prefix_len | Prefix length |
router | Router address (if any) |
rc | Return status code |
Definition at line 217 of file ipv6.c.
References address, ipv6_miniroute::address, assert(), ENOMEM, ipv6_miniroute::flags, IPV6_DEFAULT_PREFIX_LEN, ipv6_dump_miniroute(), IPV6_HAS_ADDRESS, IPV6_HAS_ROUTER, IPV6_MAX_PREFIX_LEN, ipv6_miniroute(), ipv6_miniroutes, ipv6_scope(), ipv6_miniroute::list, list_add, list_del, memcpy(), netdev, ipv6_miniroute::netdev, netdev_get(), ipv6_miniroute::prefix_len, ipv6_miniroute::prefix_mask, ipv6_miniroute::router, ipv6_miniroute::scope, and zalloc().
Referenced by ipv6_create_routes(), and ipv6_table_okx().
void ipv6_del_miniroute | ( | struct ipv6_miniroute * | miniroute | ) |
Delete IPv6 minirouting table entry.
miniroute | Routing table entry |
Definition at line 292 of file ipv6.c.
References free, ipv6_miniroute::list, list_del, ipv6_miniroute::netdev, and netdev_put().
Referenced by ipv6_create_all_routes(), and ipv6_table_del().
struct ipv6_miniroute* ipv6_route | ( | unsigned int | scope_id, |
struct in6_addr ** | dest | ||
) |
Perform IPv6 routing.
scope_id | Destination address scope ID (for link-local addresses) |
dest | Final destination address |
dest | Next hop destination address |
miniroute | Routing table entry to use, or NULL if no route |
Definition at line 307 of file ipv6.c.
References dest, ipv6_miniroute::flags, IN6_IS_ADDR_MULTICAST, IPV6_HAS_ADDRESS, IPV6_HAS_ROUTER, ipv6_match_len(), ipv6_miniroutes, ipv6_scope(), IPV6_SCOPE_MAX, ipv6_miniroute::list, list_for_each_entry, ipv6_miniroute::netdev, netdev_is_open(), NULL, ipv6_miniroute::prefix_len, ipv6_miniroute::router, scope, ipv6_miniroute::scope, and net_device::scope_id.
Referenced by ipv6_netdev(), ipv6_route_okx(), and ipv6_tx().
|
static |
Determine transmitting network device.
st_dest | Destination network-layer address |
netdev | Transmitting network device, or NULL |
Definition at line 383 of file ipv6.c.
References dest, ipv6_route(), ipv6_miniroute::netdev, NULL, sockaddr_in6::sin6_addr, and sockaddr_in6::sin6_scope_id.
|
static |
Check that received options can be safely ignored.
iphdr | IPv6 header |
options | Options extension header |
len | Maximum length of header |
rc | Return status code |
Definition at line 404 of file ipv6.c.
References DBGC, DBGC_HDA, end, ENOTSUP_OPT, IPV6_CAN_IGNORE_OPT, IPV6_OPT_PAD1, ipv6col(), len, options, and iphdr::src.
Referenced by ipv6_rx().
|
static |
Check if fragment matches fragment reassembly buffer.
fragment | Fragment reassembly buffer |
iobuf | I/O buffer |
hdrlen | Length of non-fragmentable potion of I/O buffer |
is_fragment | Fragment matches this reassembly buffer |
Definition at line 435 of file ipv6.c.
References io_buffer::data, fragment::hdrlen, ipv6_fragment_header::ident, fragment::iobuf, memcmp(), ipv6_header::src, and iphdr::src.
Get fragment offset.
iobuf | I/O buffer |
hdrlen | Length of non-fragmentable potion of I/O buffer |
offset | Offset |
Definition at line 457 of file ipv6.c.
References io_buffer::data, IPV6_MASK_OFFSET, ntohs, and ipv6_fragment_header::offset_more.
Check if more fragments exist.
iobuf | I/O buffer |
hdrlen | Length of non-fragmentable potion of I/O buffer |
more_frags | More fragments exist |
Definition at line 471 of file ipv6.c.
References io_buffer::data, htons, IPV6_MASK_MOREFRAGS, and ipv6_fragment_header::offset_more.
|
static |
Calculate IPv6 pseudo-header checksum.
iphdr | IPv6 header |
len | Payload length |
next_header | Next header type |
csum | Existing checksum |
csum | Updated checksum |
Definition at line 496 of file ipv6.c.
References iphdr::dest, ipv6_pseudo_header::dest, htonl, len, ipv6_pseudo_header::len, memcpy(), memset(), ipv6_pseudo_header::next_header, iphdr::src, ipv6_pseudo_header::src, tcpip_continue_chksum(), and ipv6_pseudo_header::zero.
|
static |
Transmit IPv6 packet.
iobuf | I/O buffer |
tcpip | Transport-layer protocol |
st_src | Source network-layer address |
st_dest | Destination network-layer address |
netdev | Network device to use if no route found, or NULL |
trans_csum | Transport-layer checksum to complete, or NULL |
rc | Status |
This function expects a transport-layer segment and prepends the IPv6 header
Definition at line 525 of file ipv6.c.
References ipv6_miniroute::address, AF_INET6, DBGC, DBGC2, iphdr::dest, ENETUNREACH, free_iob(), htonl, htons, IN6_IS_ADDR_MULTICAST, IN6_IS_ADDR_UNSPECIFIED, inet6_ntoa(), iob_len(), iob_push, IPV6_HOP_LIMIT, ipv6_pshdr_chksum(), ipv6_route(), ipv6_stats, IPV6_VER, ipv6col(), len, iphdr::len, net_device::ll_addr, net_device::ll_protocol, MAX_LL_ADDR_LEN, ll_protocol::mc_hash, memcpy(), memset(), net_device::name, ndp_tx(), net_tx(), netdev, ipv6_miniroute::netdev, NULL, ip_statistics::out_mcast_pkts, ip_statistics::out_no_routes, ip_statistics::out_octets, ip_statistics::out_requests, ip_statistics::out_transmits, rc, sockaddr_in6::sin6_addr, sockaddr_in6::sin6_scope_id, iphdr::src, src, strerror(), tcpip_protocol::tcpip_proto, and tcpip_protocol::zero_csum.
|
static |
Process incoming IPv6 packets.
iobuf | I/O buffer |
netdev | Network device |
ll_dest | Link-layer destination address |
ll_source | Link-layer destination source |
flags | Packet flags |
rc | Return status code |
This function expects an IPv6 network datagram. It processes the headers and sends it to the transport layer.
Definition at line 649 of file ipv6.c.
References AF_INET6, io_buffer::data, DBGC, DBGC2, iphdr::dest, dest, EINVAL_LEN, ENOTSUP_VER, EPIPE, ext, flags, fragment_reassemble(), free_iob(), htonl, ip_statistics::in_addr_errors, ip_statistics::in_bcast_pkts, ip_statistics::in_hdr_errors, ip_statistics::in_mcast_pkts, ip_statistics::in_octets, ip_statistics::in_receives, ip_statistics::in_truncated_pkts, inet6_ntoa(), iob_len(), iob_pull, iob_unput, ipv6_check_options(), IPV6_DESTINATION, IPV6_FRAGMENT, ipv6_has_addr(), IPV6_HOPBYHOP, IPV6_MASK_VER, ipv6_pshdr_chksum(), ipv6_reassembler, IPV6_ROUTING, ipv6_stats, IPV6_VER, ipv6col(), len, iphdr::len, LL_BROADCAST, LL_MULTICAST, memcpy(), memset(), netdev, ntohl, ntohs, rc, net_device::scope_id, sin6, iphdr::src, src, st, strerror(), TCPIP_EMPTY_CSUM, and tcpip_rx().
int inet6_aton | ( | const char * | string, |
struct in6_addr * | in | ||
) |
Parse IPv6 address.
string | IPv6 address string |
in | IPv6 address to fill in |
rc | Return status code |
Definition at line 824 of file ipv6.c.
References DBG, EINVAL, end, htons, in, memmove(), memset(), NULL, pad, pad_len, string, strtoul(), and value.
Referenced by inet6_aton_fail_okx(), inet6_aton_okx(), ipv6_route_okx(), ipv6_sock_aton(), ipv6_table_okx(), and parse_ipv6_setting().
char* inet6_ntoa | ( | const struct in6_addr * | in | ) |
Convert IPv6 address to standard notation.
in | IPv6 address |
string | IPv6 address string in canonical format |
RFC5952 defines the canonical format for IPv6 textual representation.
Definition at line 894 of file ipv6.c.
References dest, in, len, ntohs, NULL, out, sprintf, start, strcpy(), and value.
Referenced by dhcpv6_rx(), format_ipv6_setting(), inet6_aton_okx(), inet6_ntoa_okx(), ipv6_dump_miniroute(), ipv6_ntoa(), ipv6_route_okx(), ipv6_rx(), ipv6_sock_ntoa(), ipv6_tx(), ndp_prefix_fetch_ip6(), ndp_rx_neighbour_advertisement_ll_target(), ndp_rx_neighbour_solicitation_ll_source(), ndp_rx_router_advertisement_ll_source(), ndp_rx_router_advertisement_prefix(), and route_ipv6_print().
|
static |
Transcribe IPv6 address.
net_addr | IPv6 address |
string | IPv6 address in standard notation |
Definition at line 940 of file ipv6.c.
References inet6_ntoa().
|
static |
Transcribe IPv6 socket address.
sa | Socket address |
string | Socket address in standard notation |
Definition at line 950 of file ipv6.c.
References find_netdev_by_scope_id(), in, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_MULTICAST, inet6_ntoa(), net_device::name, netdev, NETDEV_NAME_LEN, NULL, sa, sin6, sockaddr_in6::sin6_addr, sockaddr_in6::sin6_scope_id, and snprintf().
|
static |
Parse IPv6 socket address.
string | Socket address string |
sa | Socket address to fill in |
rc | Return status code |
Definition at line 980 of file ipv6.c.
References ENODEV, ENOMEM, find_netdev(), free, in, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_MULTICAST, inet6_aton(), last_opened_netdev(), len, memcpy(), netdev, rc, sa, net_device::scope_id, sin6, sockaddr_in6::sin6_addr, sockaddr_in6::sin6_scope_id, strchr(), strdup(), strlen(), and tmp.
int parse_ipv6_setting | ( | const struct setting_type *type | __unused, |
const char * | value, | ||
void * | buf, | ||
size_t | len | ||
) |
Parse IPv6 address setting value.
type | Setting type |
value | Formatted setting value |
buf | Buffer to contain raw value |
len | Length of buffer |
len | Length of raw value, or negative error |
Definition at line 1082 of file ipv6.c.
References inet6_aton(), len, memcpy(), rc, and value.
int format_ipv6_setting | ( | const struct setting_type *type | __unused, |
const void * | raw, | ||
size_t | raw_len, | ||
char * | buf, | ||
size_t | len | ||
) |
Format IPv6 address setting value.
type | Setting type |
raw | Raw setting value |
raw_len | Length of raw setting value |
buf | Buffer to contain formatted value |
len | Length of buffer |
len | Length of formatted value, or negative error |
Definition at line 1109 of file ipv6.c.
References EINVAL, inet6_ntoa(), len, raw, raw_len, and snprintf().
const struct setting ip6_setting __setting | ( | SETTING_IP6 | , |
ip6 | |||
) |
IPv6 address setting.
const struct setting len6_setting __setting | ( | SETTING_IP6 | , |
len6 | |||
) |
IPv6 prefix length setting.
const struct setting gateway6_setting __setting | ( | SETTING_IP6 | , |
gateway6 | |||
) |
Default gateway setting.
|
static |
Check applicability of IPv6 link-local address setting.
settings | Settings block |
setting | Setting to fetch |
applies | Setting applies within this settings block |
Definition at line 1153 of file ipv6.c.
References ipv6_settings_scope, and setting::scope.
|
static |
Fetch IPv6 link-local address setting.
settings | Settings block |
setting | Setting to fetch |
data | Buffer to fill with setting data |
len | Length of buffer |
len | Length of setting data, or negative error |
Definition at line 1168 of file ipv6.c.
References container_of, data, ENOENT, ipv6_link_local(), len, memcpy(), memset(), netdev, settings::parent, rc, and setting_cmp().
|
static |
Register IPv6 link-local address settings.
netdev | Network device |
priv | Private data |
rc | Return status code |
Definition at line 1222 of file ipv6.c.
References IPV6_ORDER_LINK_LOCAL, IPV6_SETTINGS_NAME, ipv6_settings_operations, ipv6_settings_scope, netdev, netdev_settings(), settings::order, settings::parent, priv, rc, net_device::refcnt, register_settings(), and settings_init().
|
static |
Create IPv6 routing table based on configured settings.
netdev | Network device |
settings | Settings block |
rc | Return status code |
Definition at line 1252 of file ipv6.c.
References settings::children, DBGC, fetch_setting(), ipv6_add_miniroute(), IPV6_MAX_PREFIX_LEN, len, list_for_each_entry_reverse, net_device::name, netdev, NULL, origin, rc, and strerror().
Referenced by ipv6_create_all_routes().
|
static |
Create IPv6 routing table based on configured settings.
rc | Return status code |
Definition at line 1307 of file ipv6.c.
References for_each_netdev, ipv6_create_routes(), ipv6_del_miniroute(), ipv6_miniroutes, list_for_each_entry_safe, netdev, netdev_settings(), rc, and tmp.
REQUIRING_SYMBOL | ( | ipv6_protocol | ) |
REQUIRE_OBJECT | ( | icmpv6 | ) |
REQUIRE_OBJECT | ( | ndp | ) |
struct list_head ipv6_miniroutes = LIST_HEAD_INIT ( ipv6_miniroutes ) |
List of IPv6 miniroutes.
Definition at line 60 of file ipv6.c.
Referenced by ipv6_add_miniroute(), ipv6_create_all_routes(), ipv6_has_addr(), ipv6_miniroute(), ipv6_route(), ipv6_route_okx(), ipv6_table_del(), ipv6_table_okx(), and route_ipv6_print().
|
static |
|
static |
Fragment reassembler.
Definition at line 479 of file ipv6.c.
Referenced by ipv6_rx().
struct net_protocol ipv6_protocol __net_protocol |
IPv6 protocol.
AoE protocol.
struct tcpip_net_protocol ipv6_tcpip_protocol __tcpip_net_protocol |
IPv6 TCPIP net protocol.
struct sockaddr_converter ipv6_sockaddr_converter __sockaddr_converter |
IPv6 socket address converter.
const struct settings_scope ipv6_settings_scope |
IPv6 settings scope.
IPv6 setting scope.
Definition at line 1120 of file ipv6.c.
Referenced by dhcpv6_applies(), ipv6_applies(), ipv6_register_settings(), and ndp_prefix_applies().
|
static |
IPv6 link-local address settings operations.
Definition at line 1210 of file ipv6.c.
Referenced by ipv6_register_settings().
struct net_driver ipv6_driver __net_driver |
IPv6 network device driver.
struct settings_applicator ipv6_settings_applicator __settings_applicator |
IPv6 settings applicator.