TianoCore EDK2 master
|
Go to the source code of this file.
Data Structures | |
struct | IP6_ROUTE_ENTRY |
struct | IP6_ROUTE_CACHE_ENTRY |
struct | IP6_ROUTE_CACHE |
struct | _IP6_ROUTE_TABLE |
Macros | |
#define | IP6_DIRECT_ROUTE 0x00000001 |
#define | IP6_PACKET_TOO_BIG 0x00000010 |
#define | IP6_ROUTE_CACHE_HASH_SIZE 31 |
#define | IP6_ROUTE_CACHE_MAX 32 |
#define | IP6_ROUTE_CACHE_HASH(Ip1, Ip2) Ip6RouteCacheHash ((Ip1), (Ip2)) |
Typedefs | |
typedef struct _IP6_ROUTE_TABLE | IP6_ROUTE_TABLE |
EFI IP6 route table and route cache table definitions.
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file Ip6Route.h.
#define IP6_DIRECT_ROUTE 0x00000001 |
Definition at line 13 of file Ip6Route.h.
#define IP6_PACKET_TOO_BIG 0x00000010 |
Definition at line 14 of file Ip6Route.h.
#define IP6_ROUTE_CACHE_HASH | ( | Ip1, | |
Ip2 | |||
) | Ip6RouteCacheHash ((Ip1), (Ip2)) |
Definition at line 22 of file Ip6Route.h.
#define IP6_ROUTE_CACHE_HASH_SIZE 31 |
Definition at line 16 of file Ip6Route.h.
#define IP6_ROUTE_CACHE_MAX 32 |
Max NO. of cache entry per hash bucket
Definition at line 20 of file Ip6Route.h.
EFI_STATUS Ip6AddRoute | ( | IN OUT IP6_ROUTE_TABLE * | RtTable, |
IN EFI_IPv6_ADDRESS * | Destination, | ||
IN UINT8 | PrefixLength, | ||
IN EFI_IPv6_ADDRESS * | GatewayAddress | ||
) |
Add a route entry to the route table. It is the help function for EfiIp6Routes.
[in,out] | RtTable | Route table to add route to. |
[in] | Destination | The destination of the network. |
[in] | PrefixLength | The PrefixLength of the destination. |
[in] | GatewayAddress | The next hop address. |
EFI_ACCESS_DENIED | The same route already exists. |
EFI_OUT_OF_RESOURCES | Failed to allocate memory for the entry. |
EFI_SUCCESS | The route was added successfully. |
Definition at line 446 of file Ip6Route.c.
EFI_STATUS Ip6BuildEfiRouteTable | ( | IN IP6_ROUTE_TABLE * | RouteTable, |
OUT UINT32 * | EfiRouteCount, | ||
OUT EFI_IP6_ROUTE_TABLE **EfiRouteTable | OPTIONAL | ||
) |
Build a array of EFI_IP6_ROUTE_TABLE to be returned to the caller. The number of EFI_IP6_ROUTE_TABLE is also returned.
[in] | RouteTable | The pointer of IP6_ROUTE_TABLE internal used. |
[out] | EfiRouteCount | The number of returned route entries. |
[out] | EfiRouteTable | The pointer to the array of EFI_IP6_ROUTE_TABLE. If NULL, only the route entry count is returned. |
EFI_SUCCESS | The EFI_IP6_ROUTE_TABLE successfully built. |
EFI_OUT_OF_RESOURCES | Failed to allocate the memory for the route table. |
Build an array of EFI_IP6_ROUTE_TABLE to be returned to the caller. The number of EFI_IP6_ROUTE_TABLE is also returned.
[in] | RouteTable | The pointer of IP6_ROUTE_TABLE internal used. |
[out] | EfiRouteCount | The number of returned route entries. |
[out] | EfiRouteTable | The pointer to the array of EFI_IP6_ROUTE_TABLE. If NULL, only the route entry count is returned. |
EFI_SUCCESS | The EFI_IP6_ROUTE_TABLE successfully built. |
EFI_OUT_OF_RESOURCES | Failed to allocate the memory for the route table. |
Definition at line 261 of file Ip6Route.c.
VOID Ip6CleanRouteTable | ( | IN OUT IP6_ROUTE_TABLE * | RtTable | ) |
Free the route table and its associated route cache. Route table is reference counted.
[in,out] | RtTable | The route table to free. |
Definition at line 361 of file Ip6Route.c.
IP6_ROUTE_CACHE_ENTRY * Ip6CreateRouteCacheEntry | ( | IN EFI_IPv6_ADDRESS * | Dst, |
IN EFI_IPv6_ADDRESS * | Src, | ||
IN EFI_IPv6_ADDRESS * | GateWay, | ||
IN UINTN | Tag | ||
) |
Allocate and initialize an IP6 route cache entry.
[in] | Dst | The destination address. |
[in] | Src | The source address. |
[in] | GateWay | The next hop address. |
[in] | Tag | The tag from the caller. This marks all the cache entries spawned from one route table entry. |
Allocate and initialize a IP6 route cache entry.
[in] | Dst | The destination address. |
[in] | Src | The source address. |
[in] | GateWay | The next hop address. |
[in] | Tag | The tag from the caller. This marks all the cache entries spawned from one route table entry. |
Definition at line 167 of file Ip6Route.c.
IP6_ROUTE_ENTRY * Ip6CreateRouteEntry | ( | IN EFI_IPv6_ADDRESS *Destination | OPTIONAL, |
IN UINT8 | PrefixLength, | ||
IN EFI_IPv6_ADDRESS *GatewayAddress | OPTIONAL | ||
) |
Allocate a route entry then initialize it with the Destination/PrefixLength and Gateway.
[in] | Destination | The IPv6 destination address. This is an optional parameter that may be NULL. |
[in] | PrefixLength | The destination network's prefix length. |
[in] | GatewayAddress | The next hop address. This is optional parameter that may be NULL. |
Allocate a route entry then initialize it with the Destination/PrefixLength and Gateway.
[in] | Destination | The IPv6 destination address. This is an optional parameter that may be NULL. |
[in] | PrefixLength | The destination network's prefix length. |
[in] | GatewayAddress | The next hop address. This is an optional parameter that may be NULL. |
Definition at line 51 of file Ip6Route.c.
IP6_ROUTE_TABLE * Ip6CreateRouteTable | ( | VOID | ) |
Create an empty route table, includes its internal route cache.
Create an empty route table. This includes its internal route cache.
Definition at line 326 of file Ip6Route.c.
EFI_STATUS Ip6DelRoute | ( | IN OUT IP6_ROUTE_TABLE * | RtTable, |
IN EFI_IPv6_ADDRESS * | Destination, | ||
IN UINT8 | PrefixLength, | ||
IN EFI_IPv6_ADDRESS * | GatewayAddress | ||
) |
Remove a route entry and all the route caches spawn from it. It is the help function for EfiIp6Routes.
[in,out] | RtTable | The route table to remove the route from. |
[in] | Destination | The destination network. |
[in] | PrefixLength | The PrefixLength of the Destination. |
[in] | GatewayAddress | The next hop address. |
EFI_SUCCESS | Successfully removed the route entry. |
EFI_NOT_FOUND | There is no route entry in the table with that property. |
Remove a route entry and all the route caches spawn from it. It is the help function for EfiIp6Routes.
[in,out] | RtTable | The route table to remove the route from. |
[in] | Destination | The destination network. |
[in] | PrefixLength | The PrefixLength of the Destination. |
[in] | GatewayAddress | The next hop address. |
EFI_SUCCESS | The route entry was successfully removed. |
EFI_NOT_FOUND | There is no route entry in the table with that property. |
Definition at line 506 of file Ip6Route.c.
IP6_ROUTE_CACHE_ENTRY * Ip6FindRouteCache | ( | IN IP6_ROUTE_TABLE * | RtTable, |
IN EFI_IPv6_ADDRESS * | Dest, | ||
IN EFI_IPv6_ADDRESS * | Src | ||
) |
Find a route cache with the destination and source address. This is used by the ICMPv6 redirect message process.
[in] | RtTable | The route table to search the cache for. |
[in] | Dest | The destination address. |
[in] | Src | The source address. |
Find a route cache with the destination and source address. This is used by the ICMPv6 redirect message process.
[in] | RtTable | The route table to search the cache for. |
[in] | Dest | The destination address. |
[in] | Src | The source address. |
Definition at line 223 of file Ip6Route.c.
IP6_ROUTE_ENTRY * Ip6FindRouteEntry | ( | IN IP6_ROUTE_TABLE * | RtTable, |
IN EFI_IPv6_ADDRESS *Destination | OPTIONAL, | ||
IN EFI_IPv6_ADDRESS *NextHop | OPTIONAL | ||
) |
Search the route table for a most specific match to the Dst. It searches from the longest route area (prefix length == 128) to the shortest route area (default routes). In each route area, it will first search the instance's route table, then the default route table. This is required per the following requirements:
[in] | RtTable | The route table to search from. |
[in] | Destination | The destination address to search. If NULL, search the route table by NextHop. |
[in] | NextHop | The next hop address. If NULL, search the route table by Destination. |
Search the route table for a most specific match to the Dst. It searches from the longest route area (prefix length == 128) to the shortest route area (default routes). In each route area, it will first search the instance's route table, then the default route table. This is required per the following requirements:
[in] | RtTable | The route table to search from. |
[in] | Destination | The destination address to search. If NULL, search the route table by NextHop. |
[in] | NextHop | The next hop address. If NULL, search the route table by Destination. |
Definition at line 118 of file Ip6Route.c.
VOID Ip6FreeRouteCacheEntry | ( | IN OUT IP6_ROUTE_CACHE_ENTRY * | RtCacheEntry | ) |
Free the route cache entry. It is reference counted.
[in,out] | RtCacheEntry | The route cache entry to free. |
Definition at line 199 of file Ip6Route.c.
VOID Ip6FreeRouteEntry | ( | IN OUT IP6_ROUTE_ENTRY * | RtEntry | ) |
Free the route table entry. It is reference counted.
[in,out] | RtEntry | The route entry to free. |
Definition at line 87 of file Ip6Route.c.
IP6_ROUTE_CACHE_ENTRY * Ip6Route | ( | IN IP6_SERVICE * | IpSb, |
IN EFI_IPv6_ADDRESS * | Dest, | ||
IN EFI_IPv6_ADDRESS * | Src | ||
) |
Search the route table to route the packet. Return/create a route cache if there is a route to the destination.
[in] | IpSb | The IP6 service data. |
[in] | Dest | The destination address to search for. |
[in] | Src | The source address to search for. |
Search the route table to route the packet. Return/create a route cache if there is a route to the destination.
[in] | IpSb | The IP6 service data. |
[in] | Dest | The destination address to search for. |
[in] | Src | The source address to search for. |
Definition at line 557 of file Ip6Route.c.
UINT32 Ip6RouteCacheHash | ( | IN EFI_IPv6_ADDRESS * | Ip1, |
IN EFI_IPv6_ADDRESS * | Ip2 | ||
) |
This is the worker function for IP6_ROUTE_CACHE_HASH(). It calculates the value as the index of the route cache bucket according to the prefix of two IPv6 addresses.
[in] | Ip1 | The IPv6 address. |
[in] | Ip2 | The IPv6 address. |
Definition at line 23 of file Ip6Route.c.