X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=NetworkPkg%2FIp6Dxe%2FIp6Nd.h;h=5f1bd6fb922a7faeb4d687e543d37f1a9c1ea5a9;hb=HEAD;hp=560dfa343782e38a2c2d83e13b2e99f10d017ffe;hpb=7de8045a092ff80abcba541367709d1a309c2961;p=mirror_edk2.git diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.h b/NetworkPkg/Ip6Dxe/Ip6Nd.h index 560dfa3437..860934a167 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Nd.h +++ b/NetworkPkg/Ip6Dxe/Ip6Nd.h @@ -13,73 +13,86 @@ #define IP6_GET_TICKS(Ms) (((Ms) + IP6_TIMER_INTERVAL_IN_MS - 1) / IP6_TIMER_INTERVAL_IN_MS) enum { - IP6_INF_ROUTER_LIFETIME = 0xFFFF, + IP6_INF_ROUTER_LIFETIME = 0xFFFF, IP6_MAX_RTR_SOLICITATION_DELAY = 1000, ///< 1000 milliseconds IP6_MAX_RTR_SOLICITATIONS = 3, IP6_RTR_SOLICITATION_INTERVAL = 4000, - IP6_MIN_RANDOM_FACTOR_SCALED = 1, - IP6_MAX_RANDOM_FACTOR_SCALED = 3, - IP6_RANDOM_FACTOR_SCALE = 2, + IP6_MIN_RANDOM_FACTOR_SCALED = 1, + IP6_MAX_RANDOM_FACTOR_SCALED = 3, + IP6_RANDOM_FACTOR_SCALE = 2, - IP6_MAX_MULTICAST_SOLICIT = 3, - IP6_MAX_UNICAST_SOLICIT = 3, - IP6_MAX_ANYCAST_DELAY_TIME = 1, - IP6_MAX_NEIGHBOR_ADV = 3, - IP6_REACHABLE_TIME = 30000, - IP6_RETRANS_TIMER = 1000, - IP6_DELAY_FIRST_PROBE_TIME = 5000, + IP6_MAX_MULTICAST_SOLICIT = 3, + IP6_MAX_UNICAST_SOLICIT = 3, + IP6_MAX_ANYCAST_DELAY_TIME = 1, + IP6_MAX_NEIGHBOR_ADV = 3, + IP6_REACHABLE_TIME = 30000, + IP6_RETRANS_TIMER = 1000, + IP6_DELAY_FIRST_PROBE_TIME = 5000, - IP6_MIN_LINK_MTU = 1280, - IP6_MAX_LINK_MTU = 1500, + IP6_MIN_LINK_MTU = 1280, + IP6_MAX_LINK_MTU = 1500, - IP6_IS_ROUTER_FLAG = 0x80, - IP6_SOLICITED_FLAG = 0x40, - IP6_OVERRIDE_FLAG = 0x20, + IP6_IS_ROUTER_FLAG = 0x80, + IP6_SOLICITED_FLAG = 0x40, + IP6_OVERRIDE_FLAG = 0x20, - IP6_M_ADDR_CONFIG_FLAG = 0x80, - IP6_O_CONFIG_FLAG = 0x40, + IP6_M_ADDR_CONFIG_FLAG = 0x80, + IP6_O_CONFIG_FLAG = 0x40, - IP6_ON_LINK_FLAG = 0x80, - IP6_AUTO_CONFIG_FLAG = 0x40, + IP6_ON_LINK_FLAG = 0x80, + IP6_AUTO_CONFIG_FLAG = 0x40, - IP6_ND_LENGTH = 24, - IP6_RA_LENGTH = 16, - IP6_REDITECT_LENGTH = 40, - IP6_DAD_ENTRY_SIGNATURE = SIGNATURE_32 ('I', 'P', 'D', 'E') + IP6_ND_LENGTH = 24, + IP6_RA_LENGTH = 16, + IP6_REDITECT_LENGTH = 40, + IP6_DAD_ENTRY_SIGNATURE = SIGNATURE_32 ('I', 'P', 'D', 'E') }; typedef VOID (*IP6_ARP_CALLBACK) ( - VOID *Context + VOID *Context ); +typedef struct _IP6_OPTION_HEADER { + UINT8 Type; + UINT8 Length; +} IP6_OPTION_HEADER; + +STATIC_ASSERT (sizeof (IP6_OPTION_HEADER) == 2, "IP6_OPTION_HEADER is expected to be exactly 2 bytes long."); + typedef struct _IP6_ETHE_ADDR_OPTION { - UINT8 Type; - UINT8 Length; - UINT8 EtherAddr[6]; + UINT8 Type; + UINT8 Length; + UINT8 EtherAddr[6]; } IP6_ETHER_ADDR_OPTION; +STATIC_ASSERT (sizeof (IP6_ETHER_ADDR_OPTION) == 8, "IP6_ETHER_ADDR_OPTION is expected to be exactly 8 bytes long."); + typedef struct _IP6_MTU_OPTION { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT32 Mtu; + UINT8 Type; + UINT8 Length; + UINT16 Reserved; + UINT32 Mtu; } IP6_MTU_OPTION; +STATIC_ASSERT (sizeof (IP6_MTU_OPTION) == 8, "IP6_MTU_OPTION is expected to be exactly 8 bytes long."); + typedef struct _IP6_PREFIX_INFO_OPTION { - UINT8 Type; - UINT8 Length; - UINT8 PrefixLength; - UINT8 Reserved1; - UINT32 ValidLifetime; - UINT32 PreferredLifetime; - UINT32 Reserved2; - EFI_IPv6_ADDRESS Prefix; + UINT8 Type; + UINT8 Length; + UINT8 PrefixLength; + UINT8 Reserved1; + UINT32 ValidLifetime; + UINT32 PreferredLifetime; + UINT32 Reserved2; + EFI_IPv6_ADDRESS Prefix; } IP6_PREFIX_INFO_OPTION; +STATIC_ASSERT (sizeof (IP6_PREFIX_INFO_OPTION) == 32, "IP6_PREFIX_INFO_OPTION is expected to be exactly 32 bytes long."); + typedef VOID (*IP6_DAD_CALLBACK) ( @@ -89,25 +102,25 @@ VOID ); typedef struct _IP6_DAD_ENTRY { - UINT32 Signature; - LIST_ENTRY Link; - UINT32 MaxTransmit; - UINT32 Transmit; - UINT32 Receive; - UINT32 RetransTick; - IP6_ADDRESS_INFO *AddressInfo; - EFI_IPv6_ADDRESS Destination; - IP6_DAD_CALLBACK Callback; - VOID *Context; + UINT32 Signature; + LIST_ENTRY Link; + UINT32 MaxTransmit; + UINT32 Transmit; + UINT32 Receive; + UINT32 RetransTick; + IP6_ADDRESS_INFO *AddressInfo; + EFI_IPv6_ADDRESS Destination; + IP6_DAD_CALLBACK Callback; + VOID *Context; } IP6_DAD_ENTRY; typedef struct _IP6_DELAY_JOIN_LIST { - LIST_ENTRY Link; - UINT32 DelayTime; ///< in tick per 50 milliseconds - IP6_INTERFACE *Interface; - IP6_ADDRESS_INFO *AddressInfo; - IP6_DAD_CALLBACK DadCallback; - VOID *Context; + LIST_ENTRY Link; + UINT32 DelayTime; ///< in tick per 50 milliseconds + IP6_INTERFACE *Interface; + IP6_ADDRESS_INFO *AddressInfo; + IP6_DAD_CALLBACK DadCallback; + VOID *Context; } IP6_DELAY_JOIN_LIST; typedef struct _IP6_NEIGHBOR_ENTRY { @@ -129,20 +142,20 @@ typedef struct _IP6_NEIGHBOR_ENTRY { } IP6_NEIGHBOR_ENTRY; typedef struct _IP6_DEFAULT_ROUTER { - LIST_ENTRY Link; - INTN RefCnt; - UINT16 Lifetime; - EFI_IPv6_ADDRESS Router; - IP6_NEIGHBOR_ENTRY *NeighborCache; + LIST_ENTRY Link; + INTN RefCnt; + UINT16 Lifetime; + EFI_IPv6_ADDRESS Router; + IP6_NEIGHBOR_ENTRY *NeighborCache; } IP6_DEFAULT_ROUTER; typedef struct _IP6_PREFIX_LIST_ENTRY { - LIST_ENTRY Link; - INTN RefCnt; - UINT32 ValidLifetime; - UINT32 PreferredLifetime; - UINT8 PrefixLength; - EFI_IPv6_ADDRESS Prefix; + LIST_ENTRY Link; + INTN RefCnt; + UINT32 ValidLifetime; + UINT32 PreferredLifetime; + UINT8 PrefixLength; + EFI_IPv6_ADDRESS Prefix; } IP6_PREFIX_LIST_ENTRY; /** @@ -159,9 +172,9 @@ typedef struct _IP6_PREFIX_LIST_ENTRY { **/ EFI_STATUS Ip6BuildEfiNeighborCache ( - IN IP6_PROTOCOL *IpInstance, - OUT UINT32 *NeighborCount, - OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache + IN IP6_PROTOCOL *IpInstance, + OUT UINT32 *NeighborCount, + OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache ); /** @@ -197,9 +210,9 @@ Ip6BuildPrefixTable ( **/ IP6_DEFAULT_ROUTER * Ip6CreateDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address, - IN UINT16 RouterLifetime + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address, + IN UINT16 RouterLifetime ); /** @@ -211,8 +224,8 @@ Ip6CreateDefaultRouter ( **/ VOID Ip6DestroyDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN IP6_DEFAULT_ROUTER *DefaultRouter + IN IP6_SERVICE *IpSb, + IN IP6_DEFAULT_ROUTER *DefaultRouter ); /** @@ -223,7 +236,7 @@ Ip6DestroyDefaultRouter ( **/ VOID Ip6CleanDefaultRouterList ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); /** @@ -238,8 +251,8 @@ Ip6CleanDefaultRouterList ( **/ IP6_DEFAULT_ROUTER * Ip6FindDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -276,10 +289,10 @@ Ip6OnDADFinished ( **/ EFI_STATUS Ip6InitDADProcess ( - IN IP6_INTERFACE *IpIf, - IN IP6_ADDRESS_INFO *AddressInfo, - IN IP6_DAD_CALLBACK Callback OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *IpIf, + IN IP6_ADDRESS_INFO *AddressInfo, + IN IP6_DAD_CALLBACK Callback OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -296,9 +309,9 @@ Ip6InitDADProcess ( **/ IP6_DAD_ENTRY * Ip6FindDADEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Target, - OUT IP6_INTERFACE **Interface OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Target, + OUT IP6_INTERFACE **Interface OPTIONAL ); /** @@ -321,12 +334,12 @@ Ip6FindDADEntry ( **/ IP6_PREFIX_LIST_ENTRY * Ip6CreatePrefixListEntry ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN OnLinkOrAuto, - IN UINT32 ValidLifetime, - IN UINT32 PreferredLifetime, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *Prefix + IN IP6_SERVICE *IpSb, + IN BOOLEAN OnLinkOrAuto, + IN UINT32 ValidLifetime, + IN UINT32 PreferredLifetime, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *Prefix ); /** @@ -364,10 +377,10 @@ Ip6DestroyPrefixListEntry ( **/ IP6_PREFIX_LIST_ENTRY * Ip6FindPrefixListEntry ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN OnLinkOrAuto, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *Prefix + IN IP6_SERVICE *IpSb, + IN BOOLEAN OnLinkOrAuto, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *Prefix ); /** @@ -380,8 +393,8 @@ Ip6FindPrefixListEntry ( **/ VOID Ip6CleanPrefixListTable ( - IN IP6_SERVICE *IpSb, - IN LIST_ENTRY *ListHead + IN IP6_SERVICE *IpSb, + IN LIST_ENTRY *ListHead ); /** @@ -400,10 +413,10 @@ Ip6CleanPrefixListTable ( **/ IP6_NEIGHBOR_ENTRY * Ip6CreateNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN IP6_ARP_CALLBACK CallBack, - IN EFI_IPv6_ADDRESS *Ip6Address, - IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_ARP_CALLBACK CallBack, + IN EFI_IPv6_ADDRESS *Ip6Address, + IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL ); /** @@ -418,8 +431,8 @@ Ip6CreateNeighborEntry ( **/ IP6_NEIGHBOR_ENTRY * Ip6FindNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -445,13 +458,13 @@ Ip6FindNeighborEntry ( **/ EFI_STATUS Ip6FreeNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN IP6_NEIGHBOR_ENTRY *NeighborCache, - IN BOOLEAN SendIcmpError, - IN BOOLEAN FullFree, - IN EFI_STATUS IoStatus, - IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_NEIGHBOR_ENTRY *NeighborCache, + IN BOOLEAN SendIcmpError, + IN BOOLEAN FullFree, + IN EFI_STATUS IoStatus, + IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -480,11 +493,11 @@ Ip6FreeNeighborEntry ( **/ EFI_STATUS Ip6AddNeighbor ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ); /** @@ -508,11 +521,11 @@ Ip6AddNeighbor ( **/ EFI_STATUS Ip6DelNeighbor ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ); /** @@ -531,9 +544,9 @@ Ip6DelNeighbor ( **/ EFI_STATUS Ip6ProcessNeighborSolicit ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -551,9 +564,9 @@ Ip6ProcessNeighborSolicit ( **/ EFI_STATUS Ip6ProcessNeighborAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -571,9 +584,9 @@ Ip6ProcessNeighborAdvertise ( **/ EFI_STATUS Ip6ProcessRouterAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -594,9 +607,9 @@ Ip6ProcessRouterAdvertise ( **/ EFI_STATUS Ip6ProcessRedirect ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -618,11 +631,11 @@ Ip6ProcessRedirect ( **/ EFI_STATUS Ip6SendRouterSolicit ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface OPTIONAL, - IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, - IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, - IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface OPTIONAL, + IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, + IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, + IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ); /** @@ -645,11 +658,11 @@ Ip6SendRouterSolicit ( **/ EFI_STATUS Ip6SendNeighborSolicit ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *SourceAddress, - IN EFI_IPv6_ADDRESS *DestinationAddress, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *SourceAddress, + IN EFI_IPv6_ADDRESS *DestinationAddress, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ); /** @@ -677,14 +690,14 @@ Ip6SendNeighborSolicit ( **/ EFI_STATUS Ip6SetAddress ( - IN IP6_INTERFACE *Interface, - IN EFI_IPv6_ADDRESS *Ip6Addr, - IN BOOLEAN IsAnycast, - IN UINT8 PrefixLength, - IN UINT32 ValidLifetime, - IN UINT32 PreferredLifetime, - IN IP6_DAD_CALLBACK DadCallback OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *Interface, + IN EFI_IPv6_ADDRESS *Ip6Addr, + IN BOOLEAN IsAnycast, + IN UINT8 PrefixLength, + IN UINT32 ValidLifetime, + IN UINT32 PreferredLifetime, + IN IP6_DAD_CALLBACK DadCallback OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -699,8 +712,8 @@ Ip6SetAddress ( VOID EFIAPI Ip6NdFasterTimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -713,7 +726,7 @@ Ip6NdFasterTimerTicking ( **/ VOID Ip6NdTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); /** @@ -726,7 +739,7 @@ Ip6NdTimerTicking ( **/ VOID Ip6OnArpResolved ( - IN VOID *Context + IN VOID *Context ); /**