blob: 54eed8953e61d815eb0dafd95d1ea665503c215e [file] [log] [blame]
/*
* Copyright (c) 2012, 2015, 2017-2018, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/**
* @defgroup fal_ip FAL_IP
* @{
*/
#ifndef _FAL_IP_H_
#define _FAL_IP_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "sw.h"
#include "fal/fal_type.h"
#include "fal_multi.h"
#define FAL_MIN_VRF_ID 0
#define FAL_MAX_VRF_ID 7
/* IP WCMP hash key flags */
#define FAL_WCMP_HASH_KEY_SIP 0x1
#define FAL_WCMP_HASH_KEY_DIP 0x2
#define FAL_WCMP_HASH_KEY_SPORT 0x4
#define FAL_WCMP_HASH_KEY_DPORT 0x8
/* IP entry operation flags */
#define FAL_IP_ENTRY_ID_EN 0x1
#define FAL_IP_ENTRY_INTF_EN 0x2
#define FAL_IP_ENTRY_PORT_EN 0x4
#define FAL_IP_ENTRY_STATUS_EN 0x8
#define FAL_IP_ENTRY_IPADDR_EN 0x10
#define FAL_IP_ENTRY_ALL_EN 0x20
/* IP host entry structure flags field */
#define FAL_IP_IP4_ADDR 0x1
#define FAL_IP_IP6_ADDR 0x2
#define FAL_IP_CPU_ADDR 0x4
#define FAL_IP_IP4_ADDR_MCAST 0x8
#define FAL_IP_IP6_ADDR_MCAST 0x10
typedef struct {
a_uint8_t vsi; /*vsi value for l2 multicast*/
fal_ip4_addr_t sip4_addr; /*source ipv4 address*/
fal_ip6_addr_t sip6_addr; /*source ipv4 address*/
} fal_host_mcast_t;
typedef struct
{
a_uint32_t rx_pkt_counter; /*rx packet counter*/
a_uint64_t rx_byte_counter; /*rx byte counter*/
a_uint32_t rx_drop_pkt_counter; /*rx drop packet counter*/
a_uint64_t rx_drop_byte_counter; /*rx drop byte counter*/
a_uint32_t tx_pkt_counter; /*tx packet counter*/
a_uint64_t tx_byte_counter; /*tx byte counter*/
a_uint32_t tx_drop_pkt_counter; /*tx drop packet counter*/
a_uint64_t tx_drop_byte_counter; /*tx drop byte counter*/
} fal_ip_counter_t;
typedef struct
{
a_uint32_t entry_id; /*index for host table*/
a_uint32_t flags; /*1:ipv4 uni 2:ipv6 uni 8:ipv4 multi 0x10:ipv6 multi*/
a_uint32_t status; /* valid status: 0 or 1*/
fal_ip4_addr_t ip4_addr; /* ipv4 address */
fal_ip6_addr_t ip6_addr; /* ipv6 address */
fal_mac_addr_t mac_addr; /* unused for ppe */
a_uint32_t intf_id; /* unused for ppe */
a_uint32_t lb_num; /* unused for ppe */
a_uint32_t vrf_id; /* unused for ppe */
a_uint32_t expect_vid; /* unused for ppe */
fal_port_t port_id; /* unused for ppe */
a_bool_t mirror_en; /* unused for ppe */
a_bool_t counter_en; /* unused for ppe */
a_uint32_t counter_id; /* unused for ppe */
a_uint32_t packet; /* unused for ppe */
a_uint32_t byte; /* unused for ppe */
a_bool_t pppoe_en; /* unused for ppe */
a_uint32_t pppoe_id; /* unused for ppe */
fal_fwd_cmd_t action; /*forward action*/
a_uint32_t dst_info; /*bit 12:13: 1.nexthop, 2.port id, 3.port bitmap*/
a_uint8_t syn_toggle; /* sync toggle */
a_uint8_t lan_wan; /*0: ip over lan side ; 1: ip over wan side*/
fal_host_mcast_t mcast_info; /* multicast information */
} fal_host_entry_t;
typedef enum
{
FAL_MAC_IP_GUARD = 0,
FAL_MAC_IP_PORT_GUARD,
FAL_MAC_IP_VLAN_GUARD,
FAL_MAC_IP_PORT_VLAN_GUARD,
FAL_NO_SOURCE_GUARD,
} fal_source_guard_mode_t;
typedef enum
{
FAL_DEFAULT_FLOW_FORWARD = 0,
FAL_DEFAULT_FLOW_DROP,
FAL_DEFAULT_FLOW_RDT_TO_CPU,
FAL_DEFAULT_FLOW_ADMIT_ALL,
} fal_default_flow_cmd_t;
typedef enum
{
FAL_FLOW_LAN_TO_LAN = 0,
FAL_FLOW_WAN_TO_LAN,
FAL_FLOW_LAN_TO_WAN,
FAL_FLOW_WAN_TO_WAN,
} fal_flow_type_t;
typedef enum
{
FAL_GLB_LOCK_TIME_DISABLE = 0,
FAL_GLB_LOCK_TIME_100US,
FAL_GLB_LOCK_TIME_1MS,
FAL_GLB_LOCK_TIME_10MS,
} fal_glb_lock_time_t;
typedef enum
{
FAL_ARP_LEARN_LOCAL = 0,
FAL_ARP_LEARN_ALL,
} fal_arp_learn_mode_t;
/* IP host entry auto learn arp packets type */
#define FAL_ARP_LEARN_REQ 0x1
#define FAL_ARP_LEARN_ACK 0x2
typedef struct
{
a_uint32_t entry_id;
a_uint32_t vrf_id;
a_uint16_t vid_low;
a_uint16_t vid_high;
fal_mac_addr_t mac_addr;
a_bool_t ip4_route;
a_bool_t ip6_route;
} fal_intf_mac_entry_t;
typedef struct
{
a_uint32_t nh_nr;
a_uint32_t nh_id[16];
} fal_ip_wcmp_t;
typedef struct
{
fal_mac_addr_t mac_addr;
fal_ip4_addr_t ip4_addr;
a_uint32_t vid;
a_uint8_t load_balance;
} fal_ip4_rfs_t;
typedef struct
{
fal_mac_addr_t mac_addr;
fal_ip6_addr_t ip6_addr;
a_uint32_t vid;
a_uint8_t load_balance;
} fal_ip6_rfs_t;
typedef struct
{
a_bool_t valid;
a_uint32_t vrf_id;
fal_addr_type_t ip_version; /*0 for IPv4 and 1 for IPv6*/
a_uint32_t droute_type; /*0 for ARP and 1 for WCMP*/
a_uint32_t index;/*when droute_type equals 0, means ARP entry index or means WCMP indexs*/
} fal_default_route_t;
typedef struct
{
a_bool_t valid;
a_uint32_t vrf_id;
a_uint32_t ip_version; /*0 for IPv4 and 1 for IPv6*/
union {
fal_ip4_addr_t ip4_addr;
fal_ip6_addr_t ip6_addr;
}route_addr;
a_uint32_t prefix_length;/*For IPv4, up to 32 and for IPv6, up to 128*/
} fal_host_route_t;
typedef struct
{
a_bool_t ipv4_arp_sg_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t ipv4_arp_sg_vio_action; /* check fail action for arp source guard */
a_bool_t ipv4_arp_sg_port_en; /* source port based arp source guard enable */
a_bool_t ipv4_arp_sg_svlan_en; /* source svlan based arp source guard enable */
a_bool_t ipv4_arp_sg_cvlan_en; /* source cvlan based arp source guard enable */
fal_fwd_cmd_t ipv4_arp_src_unk_action; /* unknown action for arp source guard */
a_bool_t ip_nd_sg_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t ip_nd_sg_vio_action; /* check fail action for nd source guard */
a_bool_t ip_nd_sg_port_en; /* source port based nd source guard enable */
a_bool_t ip_nd_sg_svlan_en; /* source svlan based nd source guard enable */
a_bool_t ip_nd_sg_cvlan_en; /* source cvlan based nd source guard enable */
fal_fwd_cmd_t ip_nd_src_unk_action; /* unknown action for nd source guard */
} fal_arp_sg_cfg_t;
typedef enum
{
FAL_MC_MODE_GV = 0, /*not support igmpv3 source filter*/
FAL_MC_MODE_SGV /*support igmpv3 source filter*/
} fal_mc_mode_t;
typedef struct
{
a_bool_t l2_ipv4_mc_en; /*0 for disable and 1 for enable*/
fal_mc_mode_t l2_ipv4_mc_mode; /*two modes*/
a_bool_t l2_ipv6_mc_en; /*0 for disable and 1 for enable*/
fal_mc_mode_t l2_ipv6_mc_mode; /*same with IPv4*/
} fal_mc_mode_cfg_t;
typedef struct
{
a_uint8_t type; /*0 for IPv4 and 1 for IPv6*/
fal_fwd_cmd_t action; /* forward action */
a_uint32_t dst_info; /*bit 12:13: 1.nexthop, 2.port id, 3.port bitmap*/
a_uint8_t lan_wan; /* 0:ip over lan side; 1:ip over wan side */
union {
fal_ip4_addr_t ip4_addr; /* ipv4 address */
fal_ip6_addr_t ip6_addr; /* ipv6 address */
} route_addr;
union {
fal_ip4_addr_t ip4_addr_mask; /* ipv4 address mask */
fal_ip6_addr_t ip6_addr_mask; /* ipv6 address mask */
} route_addr_mask;
} fal_network_route_entry_t;
typedef struct {
a_uint16_t mru; /* Maximum Receive Unit*/
a_uint16_t mtu; /* Maximum Transmission Unit*/
a_bool_t ttl_dec_bypass_en; /* Bypass TTL Decrement enable*/
a_bool_t ipv4_uc_route_en; /*0 for disble and 1 for enable*/
a_bool_t ipv6_uc_route_en; /*0 for disble and 1 for enable*/
a_bool_t icmp_trigger_en; /* ICMP trigger flag enable*/
fal_fwd_cmd_t ttl_exceed_action; /*action for ttl 0*/
a_bool_t ttl_exceed_deacclr_en; /*0 for disble and 1 for enable*/
a_uint8_t mac_addr_bitmap; /* bitmap for mac address*/
fal_mac_addr_t mac_addr; /* mac address */
fal_ip_counter_t counter; /* interface related counter */
} fal_intf_entry_t;
typedef struct
{
a_bool_t l3_if_valid; /*0 for disable and 1 for enable*/
a_uint32_t l3_if_index; /*index for interface table*/
} fal_intf_id_t;
typedef enum
{
FAL_NEXTHOP_L3 = 0,
FAL_NEXTHOP_VP,
} fal_nexthop_type_t;
typedef struct
{
fal_nexthop_type_t type; /* 0: L3 1:port*/
a_uint8_t vsi; /* output vsi value if type is 0 */
fal_port_t port; /* destination port */
a_uint32_t if_index; /* egress interface index */
a_bool_t ip_to_me_en; /* 0 for disable and 1 for enable*/
a_uint8_t pub_ip_index; /*index to public ip address*/
a_uint8_t stag_fmt; /* 0: untag 1:tagged*/
a_uint16_t svid; /*svlan id*/
a_int8_t ctag_fmt; /* 0: untag 1:tagged*/
a_uint16_t cvid; /* cvlan id */
fal_mac_addr_t mac_addr; /* mac address */
fal_ip4_addr_t dnat_ip; /*dnat ip address*/
} fal_ip_nexthop_t;
typedef struct
{
a_bool_t ipv4_sg_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t ipv4_sg_vio_action; /* check fail action for ipv4 source guard */
a_bool_t ipv4_sg_port_en; /* source port based ipv4 source guard enable */
a_bool_t ipv4_sg_svlan_en; /* source svlan based ipv4 source guard enable */
a_bool_t ipv4_sg_cvlan_en; /* source cvlan based ipv4 source guard enable */
fal_fwd_cmd_t ipv4_src_unk_action; /* unknown action for ipv4 source guard */
a_bool_t ipv6_sg_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t ipv6_sg_vio_action; /* check fail action for ipv6 source guard */
a_bool_t ipv6_sg_port_en; /* source port based ipv6 source guard enable */
a_bool_t ipv6_sg_svlan_en; /* source svlan based ipv6 source guard enable */
a_bool_t ipv6_sg_cvlan_en; /* source cvlan based ipv6 source guard enable */
fal_fwd_cmd_t ipv6_src_unk_action; /* unknown action for ipv6 source guard */
} fal_sg_cfg_t;
typedef struct
{
fal_ip4_addr_t pub_ip_addr; /*public ip address*/
} fal_ip_pub_addr_t;
typedef struct {
a_bool_t valid; /* valid flag */
fal_mac_addr_t mac_addr; /* mac address */
} fal_macaddr_entry_t;
typedef struct
{
fal_fwd_cmd_t mru_fail_action; /*mru check fail action*/
a_bool_t mru_deacclr_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t mtu_fail_action; /*mtu check fail action*/
a_bool_t mtu_deacclr_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t mtu_nonfrag_fail_action; /*mtu check fail action for non-fragment */
a_bool_t mtu_df_deacclr_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t prefix_bc_action; /*0 forward, 1 drop, 2 copy, 3 rdt_cpu*/
a_bool_t prefix_deacclr_en; /*0 for disable and 1 for enable*/
fal_fwd_cmd_t icmp_rdt_action; /*0 forward, 1 drop, 2 copy, 3 rdt_cpu*/
a_bool_t icmp_rdt_deacclr_en; /*0 for disable and 1 for enable*/
a_uint8_t hash_mode_0; /*0 crc10, 1 xor, 2 crc16*/
a_uint8_t hash_mode_1; /*0 crc10, 1 xor, 2 crc16*/
} fal_ip_global_cfg_t;
enum {
FUNC_IP_NETWORK_ROUTE_GET = 0,
FUNC_IP_HOST_ADD,
FUNC_IP_VSI_SG_CFG_GET,
FUNC_IP_PUB_ADDR_SET,
FUNC_IP_PORT_SG_CFG_SET,
FUNC_IP_PORT_INTF_GET,
FUNC_IP_VSI_ARP_SG_CFG_SET,
FUNC_IP_PUB_ADDR_GET,
FUNC_IP_PORT_INTF_SET,
FUNC_IP_VSI_SG_CFG_SET,
FUNC_IP_HOST_NEXT,
FUNC_IP_PORT_MACADDR_SET,
FUNC_IP_VSI_INTF_GET,
FUNC_IP_NETWORK_ROUTE_ADD,
FUNC_IP_PORT_SG_CFG_GET,
FUNC_IP_INTF_GET,
FUNC_IP_NETWORK_ROUTE_DEL,
FUNC_IP_HOST_DEL,
FUNC_IP_ROUTE_MISMATCH_GET,
FUNC_IP_VSI_ARP_SG_CFG_GET,
FUNC_IP_PORT_ARP_SG_CFG_SET,
FUNC_IP_VSI_MC_MODE_SET,
FUNC_IP_VSI_INTF_SET,
FUNC_IP_NEXTHOP_GET,
FUNC_IP_ROUTE_MISMATCH_SET,
FUNC_IP_HOST_GET,
FUNC_IP_INTF_SET,
FUNC_IP_VSI_MC_MODE_GET,
FUNC_IP_PORT_MACADDR_GET,
FUNC_IP_PORT_ARP_SG_CFG_GET,
FUNC_IP_NEXTHOP_SET,
FUNC_IP_GLOBAL_CTRL_GET,
FUNC_IP_GLOBAL_CTRL_SET,
};
#ifndef IN_IP_MINI
sw_error_t
fal_ip_host_add(a_uint32_t dev_id, fal_host_entry_t * host_entry);
sw_error_t
fal_ip_host_del(a_uint32_t dev_id, a_uint32_t del_mode,
fal_host_entry_t * host_entry);
sw_error_t
fal_ip_host_get(a_uint32_t dev_id, a_uint32_t get_mode,
fal_host_entry_t * host_entry);
sw_error_t
fal_ip_host_next(a_uint32_t dev_id, a_uint32_t next_mode,
fal_host_entry_t * host_entry);
sw_error_t
fal_ip_host_counter_bind(a_uint32_t dev_id, a_uint32_t entry_id,
a_uint32_t cnt_id, a_bool_t enable);
sw_error_t
fal_ip_host_pppoe_bind(a_uint32_t dev_id, a_uint32_t entry_id,
a_uint32_t pppoe_id, a_bool_t enable);
sw_error_t
fal_ip_pt_arp_learn_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t flags);
sw_error_t
fal_ip_pt_arp_learn_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * flags);
sw_error_t
fal_ip_arp_learn_set(a_uint32_t dev_id, fal_arp_learn_mode_t mode);
sw_error_t
fal_ip_arp_learn_get(a_uint32_t dev_id, fal_arp_learn_mode_t * mode);
sw_error_t
fal_ip_source_guard_set(a_uint32_t dev_id, fal_port_t port_id,
fal_source_guard_mode_t mode);
sw_error_t
fal_ip_source_guard_get(a_uint32_t dev_id, fal_port_t port_id,
fal_source_guard_mode_t * mode);
sw_error_t
fal_ip_arp_guard_set(a_uint32_t dev_id, fal_port_t port_id,
fal_source_guard_mode_t mode);
sw_error_t
fal_ip_arp_guard_get(a_uint32_t dev_id, fal_port_t port_id,
fal_source_guard_mode_t * mode);
sw_error_t
fal_ip_route_status_set(a_uint32_t dev_id, a_bool_t enable);
sw_error_t
fal_ip_route_status_get(a_uint32_t dev_id, a_bool_t * enable);
sw_error_t
fal_ip_intf_entry_add(a_uint32_t dev_id, fal_intf_mac_entry_t * entry);
sw_error_t
fal_ip_intf_entry_del(a_uint32_t dev_id, a_uint32_t del_mode,
fal_intf_mac_entry_t * entry);
sw_error_t
fal_ip_intf_entry_next(a_uint32_t dev_id, a_uint32_t next_mode,
fal_intf_mac_entry_t * entry);
sw_error_t
fal_ip_unk_source_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd);
sw_error_t
fal_ip_unk_source_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd);
sw_error_t
fal_arp_unk_source_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd);
sw_error_t
fal_arp_unk_source_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd);
sw_error_t
fal_ip_age_time_set(a_uint32_t dev_id, a_uint32_t * time);
sw_error_t
fal_ip_age_time_get(a_uint32_t dev_id, a_uint32_t * time);
sw_error_t
fal_ip_wcmp_entry_set(a_uint32_t dev_id, a_uint32_t wcmp_id, fal_ip_wcmp_t * wcmp);
sw_error_t
fal_ip_wcmp_entry_get(a_uint32_t dev_id, a_uint32_t wcmp_id, fal_ip_wcmp_t * wcmp);
sw_error_t
fal_ip_wcmp_hash_mode_set(a_uint32_t dev_id, a_uint32_t hash_mode);
sw_error_t
fal_ip_rfs_ip4_rule_set(a_uint32_t dev_id, fal_ip4_rfs_t * rfs);
sw_error_t
fal_ip_rfs_ip6_rule_set(a_uint32_t dev_id, fal_ip6_rfs_t * rfs);
sw_error_t
fal_ip_rfs_ip4_rule_del(a_uint32_t dev_id, fal_ip4_rfs_t * rfs);
sw_error_t
fal_ip_rfs_ip6_rule_del(a_uint32_t dev_id, fal_ip6_rfs_t * rfs);
sw_error_t
fal_ip_wcmp_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode);
sw_error_t
fal_ip_vrf_base_addr_set(a_uint32_t dev_id, a_uint32_t vrf_id, fal_ip4_addr_t addr);
sw_error_t
fal_ip_vrf_base_addr_get(a_uint32_t dev_id, a_uint32_t vrf_id, fal_ip4_addr_t * addr);
sw_error_t
fal_ip_vrf_base_mask_set(a_uint32_t dev_id, a_uint32_t vrf_id, fal_ip4_addr_t addr);
sw_error_t
fal_ip_vrf_base_mask_get(a_uint32_t dev_id, a_uint32_t vrf_id, fal_ip4_addr_t * addr);
sw_error_t
fal_ip_default_route_set(a_uint32_t dev_id, a_uint32_t droute_id,
fal_default_route_t * entry);
sw_error_t
fal_ip_default_route_get(a_uint32_t dev_id, a_uint32_t droute_id,
fal_default_route_t * entry);
sw_error_t
fal_ip_host_route_set(a_uint32_t dev_id, a_uint32_t hroute_id,
fal_host_route_t * entry);
sw_error_t
fal_ip_host_route_get(a_uint32_t dev_id, a_uint32_t hroute_id,
fal_host_route_t * entry);
sw_error_t
fal_ip_wcmp_entry_set(a_uint32_t dev_id, a_uint32_t wcmp_id,
fal_ip_wcmp_t * wcmp);
sw_error_t
fal_ip_wcmp_entry_get(a_uint32_t dev_id, a_uint32_t wcmp_id,
fal_ip_wcmp_t * wcmp);
sw_error_t
fal_default_flow_cmd_set(a_uint32_t dev_id, a_uint32_t vrf_id,
fal_flow_type_t type, fal_default_flow_cmd_t cmd);
sw_error_t
fal_default_flow_cmd_get(a_uint32_t dev_id, a_uint32_t vrf_id,
fal_flow_type_t type, fal_default_flow_cmd_t * cmd);
sw_error_t
fal_default_rt_flow_cmd_set(a_uint32_t dev_id, a_uint32_t vrf_id,
fal_flow_type_t type, fal_default_flow_cmd_t cmd);
sw_error_t
fal_default_rt_flow_cmd_get(a_uint32_t dev_id, a_uint32_t vrf_id,
fal_flow_type_t type, fal_default_flow_cmd_t * cmd);
sw_error_t
fal_ip_vsi_arp_sg_cfg_get(a_uint32_t dev_id, a_uint32_t vsi,
fal_arp_sg_cfg_t *arp_sg_cfg);
sw_error_t
fal_ip_vsi_arp_sg_cfg_set(a_uint32_t dev_id, a_uint32_t vsi,
fal_arp_sg_cfg_t *arp_sg_cfg);
sw_error_t
fal_ip_network_route_add(a_uint32_t dev_id, a_uint32_t index,
fal_network_route_entry_t *entry);
sw_error_t
fal_ip_network_route_get(a_uint32_t dev_id,
a_uint32_t index, a_uint8_t type,
fal_network_route_entry_t *entry);
sw_error_t
fal_ip_network_route_del(a_uint32_t dev_id,
a_uint32_t index, a_uint8_t type);
sw_error_t
fal_ip_intf_set(a_uint32_t dev_id,
a_uint32_t index,
fal_intf_entry_t *entry);
sw_error_t
fal_ip_intf_get(a_uint32_t dev_id,
a_uint32_t index,
fal_intf_entry_t *entry);
sw_error_t
fal_ip_vsi_intf_set(a_uint32_t dev_id, a_uint32_t vsi, fal_intf_id_t *id);
sw_error_t
fal_ip_vsi_intf_get(a_uint32_t dev_id, a_uint32_t vsi, fal_intf_id_t *id);
sw_error_t
fal_ip_port_intf_set(a_uint32_t dev_id, fal_port_t port_id, fal_intf_id_t *id);
sw_error_t
fal_ip_port_intf_get(a_uint32_t dev_id, fal_port_t port_id, fal_intf_id_t *id);
sw_error_t
fal_ip_nexthop_set(a_uint32_t dev_id, a_uint32_t index,
fal_ip_nexthop_t *entry);
sw_error_t
fal_ip_nexthop_get(a_uint32_t dev_id, a_uint32_t index,
fal_ip_nexthop_t *entry);
sw_error_t
fal_ip_vsi_sg_cfg_get(a_uint32_t dev_id, a_uint32_t vsi,
fal_sg_cfg_t *sg_cfg);
sw_error_t
fal_ip_vsi_sg_cfg_set(a_uint32_t dev_id, a_uint32_t vsi,
fal_sg_cfg_t *sg_cfg);
sw_error_t
fal_ip_port_sg_cfg_set(a_uint32_t dev_id, fal_port_t port_id,
fal_sg_cfg_t *sg_cfg);
sw_error_t
fal_ip_port_sg_cfg_get(a_uint32_t dev_id, fal_port_t port_id,
fal_sg_cfg_t *sg_cfg);
sw_error_t
fal_ip_pub_addr_set(a_uint32_t dev_id, a_uint32_t index,
fal_ip_pub_addr_t *entry);
sw_error_t
fal_ip_pub_addr_get(a_uint32_t dev_id, a_uint32_t index,
fal_ip_pub_addr_t *entry);
sw_error_t
fal_ip_port_macaddr_set(a_uint32_t dev_id, fal_port_t port_id,
fal_macaddr_entry_t *macaddr);
sw_error_t
fal_ip_port_macaddr_get(a_uint32_t dev_id, fal_port_t port_id,
fal_macaddr_entry_t *macaddr);
sw_error_t
fal_ip_route_mismatch_action_set(a_uint32_t dev_id, fal_fwd_cmd_t action);
sw_error_t
fal_ip_route_mismatch_action_get(a_uint32_t dev_id, fal_fwd_cmd_t *action);
sw_error_t
fal_ip_port_arp_sg_cfg_set(a_uint32_t dev_id, fal_port_t port_id,
fal_arp_sg_cfg_t *arp_sg_cfg);
sw_error_t
fal_ip_port_arp_sg_cfg_get(a_uint32_t dev_id, fal_port_t port_id,
fal_arp_sg_cfg_t *arp_sg_cfg);
sw_error_t
fal_ip_vsi_mc_mode_set(a_uint32_t dev_id, a_uint32_t vsi,
fal_mc_mode_cfg_t *cfg);
sw_error_t
fal_ip_vsi_mc_mode_get(a_uint32_t dev_id, a_uint32_t vsi,
fal_mc_mode_cfg_t *cfg);
sw_error_t
fal_ip_global_ctrl_get(a_uint32_t dev_id, fal_ip_global_cfg_t *cfg);
sw_error_t
fal_ip_global_ctrl_set(a_uint32_t dev_id, fal_ip_global_cfg_t *cfg);
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _FAL_IP_H_ */
/**
* @}
*/