structrte_lpm6*rte_lpm6_create(constchar*name,intsocket_id,conststructrte_lpm6_config*config)
Create an LPM object.
Parametersname LPM object name
socket_id NUMA socket ID for LPM table memory allocation
config Structure containing the configuration
Returns
Handle to LPM object on success, NULL otherwise with rte_errno set to an appropriate values. Possible
rte_errno values include:
• E_RTE_NO_CONFIG - function could not get pointer to rte_config structure
• E_RTE_SECONDARY - function was called from a secondary process instance
• EINVAL - invalid parameter passed to function
• ENOSPC - the maximum number of memzones has already been allocated
• EEXIST - a memzone with the same name already exists
• ENOMEM - no appropriate memory area found in which to create memzone
structrte_lpm6*rte_lpm6_find_existing(constchar*name)
Find an existing LPM object and return a pointer to it.
Parametersname Name of the lpm object as passed to rte_lpm6_create()Returns
Pointer to lpm object or NULL if object not found with rte_errno set appropriately. Possible
rte_errno values include:
• ENOENT - required entry not available to return.
voidrte_lpm6_free(structrte_lpm6*lpm)
Free an LPM object.
Parameterslpm LPM object handle If lpm is NULL, no operation is performed.
intrte_lpm6_add(structrte_lpm6*lpm,conststructrte_ipv6_addr*ip,uint8_tdepth,uint32_tnext_hop)
Add a rule to the LPM table.
Parameterslpm LPM object handle
ip IP of the rule to be added to the LPM table
depth Depth of the rule to be added to the LPM table
next_hop Next hop of the rule to be added to the LPM table
Returns
0 on success, negative value otherwise
intrte_lpm6_is_rule_present(structrte_lpm6*lpm,conststructrte_ipv6_addr*ip,uint8_tdepth,uint32_t*next_hop)
Check if a rule is present in the LPM table, and provide its next hop if it is.
Parameterslpm LPM object handle
ip IP of the rule to be searched
depth Depth of the rule to searched
next_hop Next hop of the rule (valid only if it is found)
Returns
1 if the rule exists, 0 if it does not, a negative value on failure
intrte_lpm6_delete(structrte_lpm6*lpm,conststructrte_ipv6_addr*ip,uint8_tdepth)
Delete a rule from the LPM table.
Parameterslpm LPM object handle
ip IP of the rule to be deleted from the LPM table
depth Depth of the rule to be deleted from the LPM table
Returns
0 on success, negative value otherwise
intrte_lpm6_delete_bulk_func(structrte_lpm6*lpm,structrte_ipv6_addr*ips,uint8_t*depths,unsignedintn)
Delete a rule from the LPM table.
Parameterslpm LPM object handle
ips Array of IPs to be deleted from the LPM table
depths Array of depths of the rules to be deleted from the LPM table
n Number of rules to be deleted from the LPM table
Returns
0 on success, negative value otherwise.
voidrte_lpm6_delete_all(structrte_lpm6*lpm)
Delete all rules from the LPM table.
Parameterslpm LPM object handle
intrte_lpm6_lookup(conststructrte_lpm6*lpm,conststructrte_ipv6_addr*ip,uint32_t*next_hop)
Lookup an IP into the LPM table.
Parameterslpm LPM object handle
ip IP to be looked up in the LPM table
next_hop Next hop of the most specific rule found for IP (valid on lookup hit only)
Returns
-EINVAL for incorrect arguments, -ENOENT on lookup miss, 0 on lookup hit
intrte_lpm6_lookup_bulk_func(conststructrte_lpm6*lpm,structrte_ipv6_addr*ips,int32_t*next_hops,unsignedintn)
Lookup multiple IP addresses in an LPM table.
Parameterslpm LPM object handle
ips Array of IPs to be looked up in the LPM table
next_hops Next hop of the most specific rule found for IP (valid on lookup hit only). This is an
array of two byte values. The next hop will be stored on each position on success; otherwise the
position will be set to -1.
n Number of elements in ips (and next_hops) array to lookup.
Returns
-EINVAL for incorrect arguments, otherwise 0