20 #define IPV6_VER 0x60000000UL 23 #define IPV6_MASK_VER 0xf0000000UL 26 #define IPV6_HOP_LIMIT 0xff 29 #define IPV6_DEFAULT_PREFIX_LEN 64 32 #define IPV6_MAX_PREFIX_LEN 128 77 #define IPV6_CAN_IGNORE_OPT( type ) ( ( (type) & 0xc0 ) == 0x00 ) 110 #define IPV6_MASK_OFFSET 0xfff8 113 #define IPV6_MASK_MOREFRAGS 0x0001 224 addr->s6_addr[8] ^= 0x02;
252 addr->s6_addr[11] = 1;
253 addr->s6_addr[12] = 0xff;
254 memcpy ( &
addr->s6_addr[13], &unicast->s6_addr[13], 3 );
264 addr->s6_addr[15] = 2;
273 static inline unsigned int 276 return (
addr->s6_addr[1] & 0x0f );
292 #define IPV6_SETTINGS_NAME "link" 301 unsigned int prefix_len,
307 const char *
value,
void *buf,
size_t len );
ipv6_header_type
IPv6 header types.
struct arbelprm_rc_send_wqe rc
Admin-local address scope.
int format_ipv6_setting(const struct setting_type *type, const void *raw, size_t raw_len, char *buf, size_t len)
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.
struct ipv6_miniroute * ipv6_route(unsigned int scope_id, struct in6_addr **dest)
Perform IPv6 routing.
IPv6 hop-by-hop options header type.
ipv6_address_scope
IPv6 address scopes.
A fragment reassembly buffer.
uint64_t address
Base address.
static void ipv6_solicited_node(struct in6_addr *addr, const struct in6_addr *unicast)
Construct solicited-node multicast address.
uint32_t type
Operating system type.
Link-local address scope.
IPv6 type-length-value options.
IPv6 destination options header type.
Address assigned via DHCPv6.
Organisation-local address scope.
void ipv6_del_miniroute(struct ipv6_miniroute *miniroute)
Delete IPv6 minirouting table entry.
A doubly-linked list entry (or list head)
An IPv6 address/routing table entry.
struct in6_addr router
Router address.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static void ipv6_all_routers(struct in6_addr *addr)
Construct all-routers multicast address.
IPv6 fragment header type.
pseudo_bit_t value[0x00020]
static struct net_device * netdev
Address assigned via SLAAC.
struct list_head list
List of miniroutes.
IPv6 routing header type.
int(* eui64)(const void *ll_addr, void *eui64)
Generate EUI-64 address.
int parse_ipv6_setting(const struct setting_type *type, const char *value, void *buf, size_t len)
Interface-local address scope.
struct net_device * netdev
Network device.
Site-local address scope.
A network-layer protocol.
Network device management.
struct net_protocol ipv6_protocol __net_protocol
AoE protocol.
ipv6_miniroute_flags
IPv6 address/routing table entry flags.
IPv6 no next header type.
ipv6_settings_order
IPv6 settings sibling order.
Routing table entry address is valid.
if(len >=6 *4) __asm__ __volatile__("movsl" if(len >=5 *4) __asm__ __volatile__("movsl" if(len >=4 *4) __asm__ __volatile__("movsl" if(len >=3 *4) __asm__ __volatile__("movsl" if(len >=2 *4) __asm__ __volatile__("movsl" if(len >=1 *4) __asm__ __volatile__("movsl" if((len % 4) >=2) __asm__ __volatile__("movsw" if((len % 2) >=1) __asm__ __volatile__("movsb" return dest
static int ipv6_eui64(struct in6_addr *addr, struct net_device *netdev)
Construct local IPv6 address via EUI-64.
static int ipv6_link_local(struct in6_addr *addr, struct net_device *netdev)
Construct link-local address via EUI-64.
Routing table entry router address is valid.
ipv6_option_type
IPv6 option types.
unsigned int prefix_len
Prefix length.
uint8_t ll_addr[MAX_LL_ADDR_LEN]
Link-layer address.
struct in6_addr address
IPv6 address (or prefix if no address is defined)
int ipv6_has_addr(struct net_device *netdev, struct in6_addr *addr)
Check if network device has a specific IPv6 address.
struct in6_addr prefix_mask
IPv6 prefix mask (derived from prefix length)
struct ll_protocol * ll_protocol
Link-layer protocol.
static unsigned int ipv6_multicast_scope(const struct in6_addr *addr)
Get multicast address scope.
struct list_head ipv6_miniroutes
List of IPv6 miniroutes.