blob: 917d31232596bf1e9c38c71a6044d3049416911b [file] [log] [blame]
/*
* Copyright (c) 2012, 2015, 2017, 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
* @{
*/
#include "sw.h"
#include "fal_ip.h"
#include "hsl_api.h"
#include "adpt.h"
#include <linux/kernel.h>
#include <linux/module.h>
#ifndef IN_IP_MINI
static sw_error_t
_fal_ip_host_add(a_uint32_t dev_id, fal_host_entry_t * host_entry)
{
sw_error_t rv;
hsl_api_t *p_api;
adpt_api_t *p_adpt_api;
if((p_adpt_api = adpt_api_ptr_get(dev_id)) != NULL) {
if (NULL == p_adpt_api->adpt_ip_host_add)
return SW_NOT_SUPPORTED;
rv = p_adpt_api->adpt_ip_host_add(dev_id, host_entry);
return rv;
}
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_add)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_add(dev_id, host_entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
adpt_api_t *p_adpt_api;
if((p_adpt_api = adpt_api_ptr_get(dev_id)) != NULL) {
if (NULL == p_adpt_api->adpt_ip_host_del)
return SW_NOT_SUPPORTED;
rv = p_adpt_api->adpt_ip_host_del(dev_id, del_mode, host_entry);
return rv;
}
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_del)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_del(dev_id, del_mode, host_entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
adpt_api_t *p_adpt_api;
if((p_adpt_api = adpt_api_ptr_get(dev_id)) != NULL) {
if (NULL == p_adpt_api->adpt_ip_host_get)
return SW_NOT_SUPPORTED;
rv = p_adpt_api->adpt_ip_host_get(dev_id, get_mode, host_entry);
return rv;
}
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_get(dev_id, get_mode, host_entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
adpt_api_t *p_adpt_api;
if((p_adpt_api = adpt_api_ptr_get(dev_id)) != NULL) {
if (NULL == p_adpt_api->adpt_ip_host_next)
return SW_NOT_SUPPORTED;
rv = p_adpt_api->adpt_ip_host_next(dev_id, next_mode, host_entry);
return rv;
}
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_next)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_next(dev_id, next_mode, host_entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_counter_bind)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_counter_bind(dev_id, entry_id, cnt_id, enable);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_pppoe_bind)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_pppoe_bind(dev_id, entry_id, pppoe_id, enable);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_pt_arp_learn_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_pt_arp_learn_set(dev_id, port_id, flags);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_pt_arp_learn_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_pt_arp_learn_get(dev_id, port_id, flags);
return rv;
}
static sw_error_t
_fal_ip_arp_learn_set(a_uint32_t dev_id, fal_arp_learn_mode_t mode)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_arp_learn_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_arp_learn_set(dev_id, mode);
return rv;
}
static sw_error_t
_fal_ip_arp_learn_get(a_uint32_t dev_id, fal_arp_learn_mode_t * mode)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_arp_learn_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_arp_learn_get(dev_id, mode);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_source_guard_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_source_guard_set(dev_id, port_id, mode);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_source_guard_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_source_guard_get(dev_id, port_id, mode);
return rv;
}
static sw_error_t
_fal_ip_unk_source_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_unk_source_cmd_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_unk_source_cmd_set(dev_id, cmd);
return rv;
}
static sw_error_t
_fal_ip_unk_source_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_unk_source_cmd_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_unk_source_cmd_get(dev_id, cmd);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_arp_guard_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_arp_guard_set(dev_id, port_id, mode);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_arp_guard_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_arp_guard_get(dev_id, port_id, mode);
return rv;
}
static sw_error_t
_fal_arp_unk_source_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->arp_unk_source_cmd_set)
return SW_NOT_SUPPORTED;
rv = p_api->arp_unk_source_cmd_set(dev_id, cmd);
return rv;
}
static sw_error_t
_fal_arp_unk_source_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->arp_unk_source_cmd_get)
return SW_NOT_SUPPORTED;
rv = p_api->arp_unk_source_cmd_get(dev_id, cmd);
return rv;
}
static sw_error_t
_fal_ip_route_status_set(a_uint32_t dev_id, a_bool_t enable)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_route_status_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_route_status_set(dev_id, enable);
return rv;
}
static sw_error_t
_fal_ip_route_status_get(a_uint32_t dev_id, a_bool_t * enable)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_route_status_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_route_status_get(dev_id, enable);
return rv;
}
static sw_error_t
_fal_ip_intf_entry_add(a_uint32_t dev_id, fal_intf_mac_entry_t * entry)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_intf_entry_add)
return SW_NOT_SUPPORTED;
rv = p_api->ip_intf_entry_add(dev_id, entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_intf_entry_del)
return SW_NOT_SUPPORTED;
rv = p_api->ip_intf_entry_del(dev_id, del_mode, entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_intf_entry_next)
return SW_NOT_SUPPORTED;
rv = p_api->ip_intf_entry_next(dev_id, next_mode, entry);
return rv;
}
static sw_error_t
_fal_ip_age_time_set(a_uint32_t dev_id, a_uint32_t * time)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_age_time_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_age_time_set(dev_id, time);
return rv;
}
static sw_error_t
_fal_ip_age_time_get(a_uint32_t dev_id, a_uint32_t * time)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_age_time_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_age_time_get(dev_id, time);
return rv;
}
static sw_error_t
_fal_ip_wcmp_hash_mode_set(a_uint32_t dev_id, a_uint32_t hash_mode)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_wcmp_hash_mode_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_wcmp_hash_mode_set(dev_id, hash_mode);
return rv;
}
static sw_error_t
_fal_ip_wcmp_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_wcmp_hash_mode_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_wcmp_hash_mode_get(dev_id, hash_mode);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_vrf_base_addr_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_vrf_base_addr_set(dev_id, vrf_id, addr);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_vrf_base_addr_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_vrf_base_addr_get(dev_id, vrf_id, addr);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_vrf_base_mask_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_vrf_base_mask_set(dev_id, vrf_id, addr);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_vrf_base_mask_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_vrf_base_mask_get(dev_id, vrf_id, addr);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_default_route_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_default_route_set(dev_id, droute_id, entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_default_route_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_default_route_get(dev_id, droute_id, entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_route_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_route_set(dev_id, hroute_id, entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_host_route_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_host_route_get(dev_id, hroute_id, entry);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_wcmp_entry_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_wcmp_entry_set(dev_id, wcmp_id, wcmp);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_wcmp_entry_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_wcmp_entry_get(dev_id, wcmp_id, wcmp);
return rv;
}
static sw_error_t
_fal_ip_rfs_ip4_rule_set(a_uint32_t dev_id, fal_ip4_rfs_t * rfs)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_rfs_ip4_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_rfs_ip4_set(dev_id, rfs);
return rv;
}
static sw_error_t
_fal_ip_rfs_ip6_rule_set(a_uint32_t dev_id, fal_ip6_rfs_t * rfs)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_rfs_ip6_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_rfs_ip6_set(dev_id, rfs);
return rv;
}
static sw_error_t
_fal_ip_rfs_ip4_rule_del(a_uint32_t dev_id, fal_ip4_rfs_t * rfs)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_rfs_ip4_del)
return SW_NOT_SUPPORTED;
rv = p_api->ip_rfs_ip4_del(dev_id, rfs);
return rv;
}
static sw_error_t
_fal_ip_rfs_ip6_rule_del(a_uint32_t dev_id, fal_ip6_rfs_t * rfs)
{
sw_error_t rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_rfs_ip6_del)
return SW_NOT_SUPPORTED;
rv = p_api->ip_rfs_ip6_del(dev_id, rfs);
return rv;
}
static 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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_default_flow_cmd_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_default_flow_cmd_set(dev_id, vrf_id, type, cmd);
return rv;
}
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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_default_flow_cmd_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_default_flow_cmd_get(dev_id, vrf_id, type, cmd);
return rv;
}
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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_default_rt_flow_cmd_set)
return SW_NOT_SUPPORTED;
rv = p_api->ip_default_rt_flow_cmd_set(dev_id, vrf_id, type, cmd);
return rv;
}
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 rv;
hsl_api_t *p_api;
SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id));
if (NULL == p_api->ip_default_rt_flow_cmd_get)
return SW_NOT_SUPPORTED;
rv = p_api->ip_default_rt_flow_cmd_get(dev_id, vrf_id, type, cmd);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_network_route_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_network_route_get(dev_id, index, type, entry);
return rv;
}
sw_error_t
_fal_ip_vsi_sg_cfg_get(a_uint32_t dev_id, a_uint32_t vsi,
fal_sg_cfg_t *sg_cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_sg_cfg_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_sg_cfg_get(dev_id, vsi, sg_cfg);
return rv;
}
sw_error_t
_fal_ip_network_route_del(a_uint32_t dev_id,
a_uint32_t index, a_uint8_t type)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_network_route_del)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_network_route_del(dev_id, index, type);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_sg_cfg_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_sg_cfg_set(dev_id, port_id, sg_cfg);
return rv;
}
sw_error_t
_fal_ip_port_intf_get(a_uint32_t dev_id, fal_port_t port_id, fal_intf_id_t *id)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_intf_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_intf_get(dev_id, port_id, id);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_arp_sg_cfg_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_arp_sg_cfg_set(dev_id, vsi, arp_sg_cfg);
return rv;
}
sw_error_t
_fal_ip_pub_addr_get(a_uint32_t dev_id,
a_uint32_t index, fal_ip_pub_addr_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_pub_addr_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_pub_addr_get(dev_id, index, entry);
return rv;
}
sw_error_t
_fal_ip_port_intf_set(a_uint32_t dev_id, fal_port_t port_id, fal_intf_id_t *id)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_intf_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_intf_set(dev_id, port_id, id);
return rv;
}
sw_error_t
_fal_ip_vsi_sg_cfg_set(a_uint32_t dev_id, a_uint32_t vsi,
fal_sg_cfg_t *sg_cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_sg_cfg_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_sg_cfg_set(dev_id, vsi, sg_cfg);
return rv;
}
sw_error_t
_fal_ip_port_macaddr_set(a_uint32_t dev_id, fal_port_t port_id,
fal_macaddr_entry_t *macaddr)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_macaddr_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_macaddr_set(dev_id, port_id, macaddr);
return rv;
}
sw_error_t
_fal_ip_vsi_intf_get(a_uint32_t dev_id, a_uint32_t vsi, fal_intf_id_t *id)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_intf_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_intf_get(dev_id, vsi, id);
return rv;
}
sw_error_t
_fal_ip_network_route_add(a_uint32_t dev_id,
a_uint32_t index,
fal_network_route_entry_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_network_route_add)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_network_route_add(dev_id, index, entry);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_sg_cfg_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_sg_cfg_get(dev_id, port_id, sg_cfg);
return rv;
}
sw_error_t
_fal_ip_intf_get(
a_uint32_t dev_id,
a_uint32_t index,
fal_intf_entry_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_intf_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_intf_get(dev_id, index, entry);
return rv;
}
sw_error_t
_fal_ip_pub_addr_set(a_uint32_t dev_id,
a_uint32_t index, fal_ip_pub_addr_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_pub_addr_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_pub_addr_set(dev_id, index, entry);
return rv;
}
sw_error_t
_fal_ip_route_mismatch_get(a_uint32_t dev_id, fal_fwd_cmd_t *cmd)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_route_mismatch_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_route_mismatch_get(dev_id, cmd);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_arp_sg_cfg_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_arp_sg_cfg_get(dev_id, vsi, arp_sg_cfg);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_arp_sg_cfg_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_arp_sg_cfg_set(dev_id, port_id, arp_sg_cfg);
return rv;
}
sw_error_t
_fal_ip_vsi_mc_mode_set(a_uint32_t dev_id, a_uint32_t vsi,
fal_mc_mode_cfg_t *cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_mc_mode_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_mc_mode_set(dev_id, vsi, cfg);
return rv;
}
sw_error_t
_fal_ip_vsi_intf_set(a_uint32_t dev_id, a_uint32_t vsi, fal_intf_id_t *id)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_intf_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_intf_set(dev_id, vsi, id);
return rv;
}
sw_error_t
_fal_ip_nexthop_get(a_uint32_t dev_id, a_uint32_t index, fal_ip_nexthop_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_nexthop_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_nexthop_get(dev_id, index, entry);
return rv;
}
sw_error_t
_fal_ip_route_mismatch_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_route_mismatch_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_route_mismatch_set(dev_id, cmd);
return rv;
}
sw_error_t
_fal_ip_intf_set(
a_uint32_t dev_id,
a_uint32_t index,
fal_intf_entry_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_intf_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_intf_set(dev_id, index, entry);
return rv;
}
sw_error_t
_fal_ip_vsi_mc_mode_get(a_uint32_t dev_id, a_uint32_t vsi,
fal_mc_mode_cfg_t *cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_vsi_mc_mode_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_vsi_mc_mode_get(dev_id, vsi, cfg);
return rv;
}
sw_error_t
_fal_ip_port_macaddr_get(a_uint32_t dev_id, fal_port_t port_id,
fal_macaddr_entry_t *macaddr)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_macaddr_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_macaddr_get(dev_id, port_id, macaddr);
return rv;
}
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)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_port_arp_sg_cfg_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_port_arp_sg_cfg_get(dev_id, port_id, arp_sg_cfg);
return rv;
}
sw_error_t
_fal_ip_nexthop_set(a_uint32_t dev_id,
a_uint32_t index, fal_ip_nexthop_t *entry)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_nexthop_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_nexthop_set(dev_id, index, entry);
return rv;
}
sw_error_t
_fal_ip_global_ctrl_set(a_uint32_t dev_id, fal_ip_global_cfg_t *cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_global_ctrl_set)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_global_ctrl_set(dev_id, cfg);
return rv;
}
sw_error_t
_fal_ip_global_ctrl_get(a_uint32_t dev_id, fal_ip_global_cfg_t *cfg)
{
adpt_api_t *p_api;
sw_error_t rv = SW_OK;
SW_RTN_ON_NULL(p_api = adpt_api_ptr_get(dev_id));
if (NULL == p_api->adpt_ip_global_ctrl_get)
return SW_NOT_SUPPORTED;
rv = p_api->adpt_ip_global_ctrl_get(dev_id, cfg);
return rv;
}
/*insert flag for inner fal, don't remove it*/
/**
* @brief Add one host entry to one particular device.
* @details Comments:
* For ISIS the intf_id parameter in host_entry means vlan id.
Before host entry added related interface entry and ip6 base address
must be set at first.
Hardware entry id will be returned.
* @param[in] dev_id device id
* @param[in] host_entry host entry parameter
* @return SW_OK or error code
*/
sw_error_t
fal_ip_host_add(a_uint32_t dev_id, fal_host_entry_t * host_entry)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_host_add(dev_id, host_entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Delete one host entry from one particular device.
* @details Comments:
* For ISIS the intf_id parameter in host_entry means vlan id.
Before host entry deleted related interface entry and ip6 base address
must be set atfirst.
For del_mode please refer IP entry operation flags.
* @param[in] dev_id device id
* @param[in] del_mode delete operation mode
* @param[in] host_entry host entry parameter
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_del(dev_id, del_mode, host_entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get one host entry from one particular device.
* @details Comments:
* For ISIS the intf_id parameter in host_entry means vlan id.
Before host entry deleted related interface entry and ip6 base address
must be set atfirst.
For get_mode please refer IP entry operation flags.
* @param[in] dev_id device id
* @param[in] get_mode get operation mode
* @param[out] host_entry host entry parameter
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_get(dev_id, get_mode, host_entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Next one host entry from one particular device.
* @details Comments:
* For ISIS the intf_id parameter in host_entry means vlan id.
Before host entry deleted related interface entry and ip6 base address
must be set atfirst.
For next_mode please refer IP entry operation flags.
For get the first entry please set entry id as FAL_NEXT_ENTRY_FIRST_ID
* @param[in] dev_id device id
* @param[in] next_mode next operation mode
* @param[out] host_entry host entry parameter
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_next(dev_id, next_mode, host_entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Bind one counter entry to one host entry on one particular device.
* @param[in] dev_id device id
* @param[in] entry_id host entry id
* @param[in] cnt_id counter entry id
* @param[in] enable A_TRUE means bind, A_FALSE means unbind
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_counter_bind(dev_id, entry_id, cnt_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Bind one pppoe session entry to one host entry on one particular device.
* @param[in] dev_id device id
* @param[in] entry_id host entry id
* @param[in] pppoe_id pppoe session entry id
* @param[in] enable A_TRUE means bind, A_FALSE means unbind
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_pppoe_bind(dev_id, entry_id, pppoe_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set arp packets type to learn on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] flags arp type FAL_ARP_LEARN_REQ and/or FAL_ARP_LEARN_ACK
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_pt_arp_learn_set(dev_id, port_id, flags);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get arp packets type to learn on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] flags arp type FAL_ARP_LEARN_REQ and/or FAL_ARP_LEARN_ACK
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_pt_arp_learn_get(dev_id, port_id, flags);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set arp packets type to learn on one particular device.
* @param[in] dev_id device id
* @param[in] mode learning mode
* @return SW_OK or error code
*/
sw_error_t
fal_ip_arp_learn_set(a_uint32_t dev_id, fal_arp_learn_mode_t mode)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_arp_learn_set(dev_id, mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get arp packets type to learn on one particular device.
* @param[in] dev_id device id
* @param[out] mode learning mode
* @return SW_OK or error code
*/
sw_error_t
fal_ip_arp_learn_get(a_uint32_t dev_id, fal_arp_learn_mode_t * mode)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_arp_learn_get(dev_id, mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set ip packets source guarding mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] mode source guarding mode
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_source_guard_set(dev_id, port_id, mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get ip packets source guarding mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] mode source guarding mode
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_source_guard_get(dev_id, port_id, mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set unkonw source ip packets forwarding command on one particular device.
* @details Comments:
* This settin is no meaning when ip source guard not enable
* @param[in] dev_id device id
* @param[in] cmd forwarding command
* @return SW_OK or error code
*/
sw_error_t
fal_ip_unk_source_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_unk_source_cmd_set(dev_id, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get unkonw source ip packets forwarding command on one particular device.
* @param[in] dev_id device id
* @param[out] cmd forwarding command
* @return SW_OK or error code
*/
sw_error_t
fal_ip_unk_source_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_unk_source_cmd_get(dev_id, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set arp packets source guarding mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[in] mode source guarding mode
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_arp_guard_set(dev_id, port_id, mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get arp packets source guarding mode on one particular port.
* @param[in] dev_id device id
* @param[in] port_id port id
* @param[out] mode source guarding mode
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_arp_guard_get(dev_id, port_id, mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set unkonw source arp packets forwarding command on one particular device.
* @details Comments:
* This settin is no meaning when arp source guard not enable
* @param[in] dev_id device id
* @param[in] cmd forwarding command
* @return SW_OK or error code
*/
sw_error_t
fal_arp_unk_source_cmd_set(a_uint32_t dev_id, fal_fwd_cmd_t cmd)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_arp_unk_source_cmd_set(dev_id, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get unkonw source arp packets forwarding command on one particular device.
* @param[in] dev_id device id
* @param[out] cmd forwarding command
* @return SW_OK or error code
*/
sw_error_t
fal_arp_unk_source_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_arp_unk_source_cmd_get(dev_id, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set IP unicast routing status on one particular device.
* @param[in] dev_id device id
* @param[in] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_ip_route_status_set(a_uint32_t dev_id, a_bool_t enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_route_status_set(dev_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get IP unicast routing status on one particular device.
* @param[in] dev_id device id
* @param[out] enable A_TRUE or A_FALSE
* @return SW_OK or error code
*/
sw_error_t
fal_ip_route_status_get(a_uint32_t dev_id, a_bool_t * enable)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_route_status_get(dev_id, enable);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Add one interface entry to one particular device.
* @param[in] dev_id device id
* @param[in] entry interface entry
* @return SW_OK or error code
*/
sw_error_t
fal_ip_intf_entry_add(a_uint32_t dev_id, fal_intf_mac_entry_t * entry)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_intf_entry_add(dev_id, entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Delete one interface entry from one particular device.
* @param[in] dev_id device id
* @param[in] del_mode delete operation mode
* @param[in] entry interface entry
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_intf_entry_del(dev_id, del_mode, entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Next one interface entry from one particular device.
* @param[in] dev_id device id
* @param[in] next_mode next operation mode
* @param[out] entry interface entry
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_ip_intf_entry_next(dev_id, next_mode, entry);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set IP host entry aging time on one particular device.
* @details Comments:
* This operation will set dynamic entry aging time on a particular device.
* The unit of time is second. Because different device has differnet
* hardware granularity function will return actual time in hardware.
* @param[in] dev_id device id
* @param[in] time aging time
* @param[out] time actual aging time
* @return SW_OK or error code
*/
sw_error_t
fal_ip_age_time_set(a_uint32_t dev_id, a_uint32_t * time)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_age_time_set(dev_id, time);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get IP host entry aging time on one particular device.
* @param[in] dev_id device id
* @param[out] time aging time
* @return SW_OK or error code
*/
sw_error_t
fal_ip_age_time_get(a_uint32_t dev_id, a_uint32_t * time)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_age_time_get(dev_id, time);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set IP WCMP hash key mode.
* @param[in] dev_id device id
* @param[in] hash_mode hash mode
* @return SW_OK or error code
*/
sw_error_t
fal_ip_wcmp_hash_mode_set(a_uint32_t dev_id, a_uint32_t hash_mode)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_wcmp_hash_mode_set(dev_id, hash_mode);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get IP WCMP hash key mode.
* @param[in] dev_id device id
* @param[out] hash_mode hash mode
* @return SW_OK or error code
*/
sw_error_t
fal_ip_wcmp_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_wcmp_hash_mode_get(dev_id, hash_mode);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_vrf_base_addr_set(dev_id, vrf_id, addr);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_vrf_base_addr_get(dev_id, vrf_id, addr);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_vrf_base_mask_set(dev_id, vrf_id, addr);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_vrf_base_mask_get(dev_id, vrf_id, addr);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_default_route_set(dev_id, droute_id, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_default_route_get(dev_id, droute_id, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_route_set(dev_id, hroute_id, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_host_route_get(dev_id, hroute_id, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_wcmp_entry_set(dev_id, wcmp_id, wcmp);
FAL_API_UNLOCK;
return rv;
}
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 rv;
FAL_API_LOCK;
rv = _fal_ip_wcmp_entry_get(dev_id, wcmp_id, wcmp);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_rfs_ip4_rule_set(a_uint32_t dev_id, fal_ip4_rfs_t * rfs)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_rfs_ip4_rule_set(dev_id, rfs);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_rfs_ip6_rule_set(a_uint32_t dev_id, fal_ip6_rfs_t * rfs)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_rfs_ip6_rule_set(dev_id, rfs);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_rfs_ip4_rule_del(a_uint32_t dev_id, fal_ip4_rfs_t * rfs)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_rfs_ip4_rule_del(dev_id, rfs);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_rfs_ip6_rule_del(a_uint32_t dev_id, fal_ip6_rfs_t * rfs)
{
sw_error_t rv;
FAL_API_LOCK;
rv = _fal_ip_rfs_ip6_rule_del(dev_id, rfs);
FAL_API_UNLOCK;
return rv;
}
int ssdk_rfs_ip4_rule_set(u16 vid, u32 ip, u8* mac, u8 ldb, int is_set)
{
fal_ip4_rfs_t entry;
memcpy(&entry.mac_addr, mac, 6);
entry.ip4_addr = ip;
entry.load_balance = ldb;
entry.vid = vid;
if(is_set)
return fal_ip_rfs_ip4_rule_set(0, &entry);
else
return fal_ip_rfs_ip4_rule_del(0, &entry);
}
int ssdk_rfs_ip6_rule_set(u16 vid, u8* ip, u8* mac, u8 ldb, int is_set)
{
fal_ip6_rfs_t entry;
memcpy(&entry.mac_addr, mac, 6);
memcpy(&entry.ip6_addr, ip, sizeof(entry.ip6_addr));
entry.load_balance = ldb;
entry.vid = vid;
if(is_set)
return fal_ip_rfs_ip6_rule_set(0, &entry);
else
return fal_ip_rfs_ip6_rule_del(0, &entry);
}
#if 0
int
ssdk_ip_rfs_ip4_rule_set(ssdk_ip4_rfs_t * rfs)
{
fal_ip4_rfs_t entry;
memcpy(&entry.mac_addr, rfs->mac_addr, 6);
entry.ip4_addr = rfs->ip4_addr;
entry.load_balance = rfs->load_balance;
entry.vid = rfs->vid;
return fal_ip_rfs_ip4_rule_set(0, &entry);
}
int
ssdk_ip_rfs_ip4_rule_del(ssdk_ip4_rfs_t * rfs)
{
fal_ip4_rfs_t entry;
memcpy(&entry.mac_addr, rfs->mac_addr, 6);
entry.ip4_addr = rfs->ip4_addr;
entry.load_balance = rfs->load_balance;
entry.vid = rfs->vid;
return fal_ip_rfs_ip4_rule_del(0, &entry);
}
int
ssdk_ip_rfs_ip6_rule_set(ssdk_ip6_rfs_t * rfs)
{
fal_ip6_rfs_t entry;
memcpy(&entry.mac_addr, rfs->mac_addr, 6);
memcpy(&entry.ip6_addr, rfs->ip6_addr, sizeof(rfs->ip6_addr));
entry.load_balance = rfs->load_balance;
entry.vid = rfs->vid;
return fal_ip_rfs_ip6_rule_set(0, &entry);
}
int
ssdk_ip_rfs_ip6_rule_del(ssdk_ip6_rfs_t * rfs)
{
fal_ip6_rfs_t entry;
memcpy(&entry.mac_addr, rfs->mac_addr, 6);
memcpy(&entry.ip6_addr, rfs->ip6_addr, sizeof(rfs->ip6_addr));
entry.load_balance = rfs->load_balance;
entry.vid = rfs->vid;
return fal_ip_rfs_ip6_rule_del(0, &entry);
}
EXPORT_SYMBOL(ssdk_ip_rfs_ip4_rule_set);
EXPORT_SYMBOL(ssdk_ip_rfs_ip4_rule_del);
EXPORT_SYMBOL(ssdk_ip_rfs_ip6_rule_set);
EXPORT_SYMBOL(ssdk_ip_rfs_ip6_rule_del);
#endif
/**
* @brief Set default flow forward command
* @param[in] dev_id device id
* @param[in] vrf_id VRF route index, from 0~7
* @param[in] type traffic flow type pass through switch core
* @param[in] fal_default_flow_cmd_t default flow forward command when flow table mismatch
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_default_flow_cmd_set(dev_id, vrf_id, type, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get flow type traffic default forward command.
* @param[in] dev_id device id
* @param[in] vrf_id VRF route index, from 0~7
* @param[in] type traffic flow type pass through switch core
* @param[out] fal_default_flow_cmd_t default flow forward command when flow table mismatch
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_default_flow_cmd_get(dev_id, vrf_id, type, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Set default route flow forward command
* @param[in] dev_id device id
* @param[in] vrf_id VRF route index, from 0~7
* @param[in] type traffic flow type pass through switch core
* @param[in] fal_default_flow_cmd_t default route flow forward command when flow table mismatch
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_default_rt_flow_cmd_set(dev_id, vrf_id, type, cmd);
FAL_API_UNLOCK;
return rv;
}
/**
* @brief Get flow type traffic default forward command.
* @param[in] dev_id device id
* @param[in] vrf_id VRF route index, from 0~7
* @param[in] type traffic flow type pass through switch core
* @param[out] fal_default_flow_cmd_t default route flow forward command when flow table mismatch
* @return SW_OK or error code
*/
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 rv;
FAL_API_LOCK;
rv = _fal_default_rt_flow_cmd_get(dev_id, vrf_id, type, cmd);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_network_route_get(dev_id, index, type, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_sg_cfg_get(dev_id, vsi, sg_cfg);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_network_route_del(a_uint32_t dev_id,
a_uint32_t index, a_uint8_t type)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_network_route_del(dev_id, index, type);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_sg_cfg_set(dev_id, port_id, sg_cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_intf_get(dev_id, port_id, id);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_arp_sg_cfg_set(dev_id, vsi, arp_sg_cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_pub_addr_get(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_intf_set(dev_id, port_id, id);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_sg_cfg_set(dev_id, vsi, sg_cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_macaddr_set(dev_id, port_id, macaddr);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_intf_get(dev_id, vsi, id);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_network_route_add(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_sg_cfg_get(dev_id, port_id, sg_cfg);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_intf_get(
a_uint32_t dev_id,
a_uint32_t index,
fal_intf_entry_t *entry)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_intf_get(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_pub_addr_set(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_route_mismatch_action_get(a_uint32_t dev_id, fal_fwd_cmd_t *action)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_route_mismatch_get(dev_id, action);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_arp_sg_cfg_get(dev_id, vsi, arp_sg_cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_arp_sg_cfg_set(dev_id, port_id, arp_sg_cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_mc_mode_set(dev_id, vsi, cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_intf_set(dev_id, vsi, id);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_nexthop_get(a_uint32_t dev_id,
a_uint32_t index, fal_ip_nexthop_t *entry)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_nexthop_get(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_route_mismatch_action_set(a_uint32_t dev_id, fal_fwd_cmd_t action)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_route_mismatch_set(dev_id, action);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_intf_set(
a_uint32_t dev_id,
a_uint32_t index,
fal_intf_entry_t *entry)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_intf_set(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_vsi_mc_mode_get(dev_id, vsi, cfg);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_macaddr_get(dev_id, port_id, macaddr);
FAL_API_UNLOCK;
return rv;
}
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 rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_port_arp_sg_cfg_get(dev_id, port_id, arp_sg_cfg);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_nexthop_set(a_uint32_t dev_id,
a_uint32_t index, fal_ip_nexthop_t *entry)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_nexthop_set(dev_id, index, entry);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_global_ctrl_set(a_uint32_t dev_id, fal_ip_global_cfg_t *cfg)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_global_ctrl_set(dev_id, cfg);
FAL_API_UNLOCK;
return rv;
}
sw_error_t
fal_ip_global_ctrl_get(a_uint32_t dev_id, fal_ip_global_cfg_t *cfg)
{
sw_error_t rv = SW_OK;
FAL_API_LOCK;
rv = _fal_ip_global_ctrl_get(dev_id, cfg);
FAL_API_UNLOCK;
return rv;
}
#endif
/*insert flag for outter fal, don't remove it*/
/**
* @}
*/