|
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) | |
| FILE_SECBOOT (PERMITTED) | |
| struct ip_statistics_family ipv6_statistics_family | __ip_statistics_family (IP_STATISTICS_IPV6) |
| IPv6 statistics family. | |
| static uint32_t | ipv6col (struct in6_addr *in) |
| Determine debugging colour for IPv6 debug messages. | |
| static unsigned int | ipv6_scope (const struct in6_addr *addr) |
| Determine IPv6 address scope. | |
| static void | ipv6_dump_miniroute (struct ipv6_miniroute *miniroute) |
| Dump IPv6 routing table entry. | |
| int | ipv6_has_addr (struct net_device *netdev, struct in6_addr *addr) |
| Check if network device has a specific IPv6 address. | |
| static unsigned int | ipv6_match_len (struct ipv6_miniroute *miniroute, struct in6_addr *address) |
| Count matching bits of an IPv6 routing table entry prefix. | |
| static struct ipv6_miniroute * | ipv6_miniroute (struct net_device *netdev, struct in6_addr *address) |
| Find IPv6 routing table entry for a given address. | |
| 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. | |
| void | ipv6_del_miniroute (struct ipv6_miniroute *miniroute) |
| Delete IPv6 minirouting table entry. | |
| struct ipv6_miniroute * | ipv6_route (unsigned int scope_id, struct in6_addr **dest) |
| Perform IPv6 routing. | |
| static struct net_device * | ipv6_netdev (struct sockaddr_tcpip *st_dest) |
| Determine transmitting network device. | |
| 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. | |
| static int | ipv6_is_fragment (struct fragment *fragment, struct io_buffer *iobuf, size_t hdrlen) |
| Check if fragment matches fragment reassembly buffer. | |
| static size_t | ipv6_fragment_offset (struct io_buffer *iobuf, size_t hdrlen) |
| Get fragment offset. | |
| static int | ipv6_more_fragments (struct io_buffer *iobuf, size_t hdrlen) |
| Check if more fragments exist. | |
| static uint16_t | ipv6_pshdr_chksum (struct ipv6_header *iphdr, size_t len, int next_header, uint16_t csum) |
| Calculate IPv6 pseudo-header checksum. | |
| 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. | |
| 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. | |
| int | inet6_aton (const char *string, struct in6_addr *in) |
| Parse IPv6 address. | |
| char * | inet6_ntoa (const struct in6_addr *in) |
| Convert IPv6 address to standard notation. | |
| static const char * | ipv6_ntoa (const void *net_addr) |
| Transcribe IPv6 address. | |
| static const char * | ipv6_sock_ntoa (struct sockaddr *sa) |
| Transcribe IPv6 socket address. | |
| static int | ipv6_sock_aton (const char *string, struct sockaddr *sa) |
| Parse IPv6 socket address. | |
| int | parse_ipv6_setting (const struct setting_type *type __unused, const char *value, void *buf, size_t len) |
| Parse IPv6 address setting 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. | |
| 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 int | ipv6_applies (struct settings *settings __unused, const struct setting *setting) |
| Check applicability of IPv6 link-local address setting. | |
| static int | ipv6_fetch (struct settings *settings, struct setting *setting, void *data, size_t len) |
| Fetch IPv6 link-local address setting. | |
| static int | ipv6_register_settings (struct net_device *netdev, void *priv) |
| Register IPv6 link-local address settings. | |
| static int | ipv6_create_routes (struct net_device *netdev, struct settings *settings) |
| Create IPv6 routing table based on configured settings. | |
| static int | ipv6_create_all_routes (void) |
| Create IPv6 routing table based on configured settings. | |
| 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. | |
| static struct ip_statistics | ipv6_stats |
| IPv6 statistics. | |
| static struct fragment_reassembler | ipv6_reassembler |
| Fragment reassembler. | |
| struct net_protocol ipv6_protocol | __net_protocol |
| IPv6 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. | |
| static struct settings_operations | ipv6_settings_operations |
| IPv6 link-local address settings operations. | |
| struct net_driver ipv6_driver | __net_driver |
| IPv6 network device driver. | |
| struct settings_applicator ipv6_settings_applicator | __settings_applicator |
| IPv6 settings applicator. | |
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 ) |
Definition at line 56 of file ipv6.c.
Referenced by ipv6_check_options().
| #define EINFO_ENOTSUP_OPT __einfo_uniqify ( EINFO_ENOTSUP, 0x03, "Unsupported option" ) |
| FILE_LICENCE | ( | GPL2_OR_LATER | ) |
| FILE_SECBOOT | ( | PERMITTED | ) |
| struct ip_statistics_family ipv6_statistics_family __ip_statistics_family | ( | IP_STATISTICS_IPV6 | ) |
IPv6 statistics family.
References __ip_statistics_family, IP_STATISTICS_IPV6, and ipv6_stats.
Determine debugging colour for IPv6 debug messages.
| in | IPv6 address |
| col | Debugging colour (for DBGC()) |
Definition at line 79 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 89 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 123 of file ipv6.c.
References ipv6_miniroute::address, DBGC, ipv6_miniroute::flags, inet6_ntoa(), IPV6_HAS_ADDRESS, IPV6_HAS_ROUTER, ipv6_miniroute::netdev, 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 142 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(), ipv6_miniroute::netdev, and 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 164 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 193 of file ipv6.c.
References address, ipv6_match_len(), ipv6_miniroutes, ipv6_miniroute::list, list_for_each_entry, ipv6_miniroute::netdev, 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 218 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(), ipv6_miniroute::netdev, 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 293 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 308 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, ipv6_miniroute::scope, 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 384 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 405 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().
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 436 of file ipv6.c.
References io_buffer::data, fragment::hdrlen, ipv6_fragment_header::ident, fragment::iobuf, memcmp(), iphdr::src, and ipv6_header::src.
Get fragment offset.
| iobuf | I/O buffer |
| hdrlen | Length of non-fragmentable potion of I/O buffer |
| offset | Offset |
Definition at line 458 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 472 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 497 of file ipv6.c.
References iphdr::dest, ipv6_pseudo_header::dest, htonl, ipv6_pseudo_header::len, 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 526 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(), iphdr::len, len, MAX_LL_ADDR_LEN, memcpy(), memset(), ndp_tx(), net_tx(), ipv6_miniroute::netdev, netdev, NULL, 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 650 of file ipv6.c.
References __unused, AF_INET6, io_buffer::data, DBGC, DBGC2, dest, iphdr::dest, EINVAL_LEN, ENOTSUP_VER, EPIPE, ext, flags, fragment_reassemble(), free_iob(), htonl, 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(), iphdr::len, len, LL_BROADCAST, LL_MULTICAST, memcpy(), memset(), netdev, ntohl, ntohs, rc, 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 825 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 895 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 941 of file ipv6.c.
References inet6_ntoa().
|
static |
Transcribe IPv6 socket address.
| sa | Socket address |
| string | Socket address in standard notation |
Definition at line 951 of file ipv6.c.
References find_netdev_by_scope_id(), in, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_MULTICAST, inet6_ntoa(), netdev, NETDEV_NAME_LEN, NULL, sa, sin6, and snprintf().
|
static |
Parse IPv6 socket address.
| string | Socket address string |
| sa | Socket address to fill in |
| rc | Return status code |
Definition at line 981 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, sin6, 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 1083 of file ipv6.c.
References __unused, inet6_aton(), len, memcpy(), rc, type, 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 1110 of file ipv6.c.
References __unused, EINVAL, inet6_ntoa(), len, raw, raw_len, snprintf(), and type.
| const struct setting ip6_setting __setting | ( | SETTING_IP6 | , |
| ip6 | ) |
IPv6 address setting.
References __setting, ip6_setting, ipv6_settings_scope, and SETTING_IP6.
| const struct setting len6_setting __setting | ( | SETTING_IP6 | , |
| len6 | ) |
IPv6 prefix length setting.
References __setting, ipv6_settings_scope, len6_setting, and SETTING_IP6.
| const struct setting gateway6_setting __setting | ( | SETTING_IP6 | , |
| gateway6 | ) |
Default gateway setting.
References __setting, gateway6_setting, ipv6_settings_scope, and SETTING_IP6.
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 1154 of file ipv6.c.
References __unused, 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 1169 of file ipv6.c.
References container_of, data, ENOENT, ip6_setting, ipv6_link_local(), len, len6_setting, 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 1223 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, 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 1253 of file ipv6.c.
References settings::children, DBGC, fetch_setting(), gateway6_setting, ip6_setting, ipv6_add_miniroute(), ipv6_create_routes(), IPV6_MAX_PREFIX_LEN, len, len6_setting, list_for_each_entry_reverse, netdev, NULL, origin, rc, and strerror().
Referenced by ipv6_create_all_routes(), and ipv6_create_routes().
|
static |
Create IPv6 routing table based on configured settings.
| rc | Return status code |
Definition at line 1308 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 61 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 |
IPv6 statistics.
Definition at line 64 of file ipv6.c.
Referenced by __ip_statistics_family(), ipv6_rx(), and ipv6_tx().
|
static |
Fragment reassembler.
Definition at line 480 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.
Definition at line 1058 of file ipv6.c.
| 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 1121 of file ipv6.c.
Referenced by __setting(), __setting(), __setting(), dhcpv6_applies(), ipv6_applies(), ipv6_register_settings(), and ndp_prefix_applies().
|
static |
IPv6 link-local address settings operations.
Definition at line 1211 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.