blob: 759592430d0d4f9a74a09f24d64a37a6e7dacde6 [file] [log] [blame]
/*
**************************************************************************
* Copyright (c) 2019, 2021 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.
**************************************************************************
*/
#ifndef __NSS_L2TPMGR_H__
#define __NSS_L2TPMGR_H__
typedef int32_t (*get_ipsec_ifnum_by_dev_callback_t)(struct net_device *);
typedef int32_t (*get_ipsec_ifnum_by_ipv4_addr_callback_t)(uint32_t *src_ip, uint32_t *dest_ip);
/**
* l2tpmgr_ipsecmgr_cb
* Callback to get the dummy IPSec interface number that was used to register with NSS
* by the IPSec manager when given the IPSec Linux dev.
* get_ifnum_by_dev: passes net_device ptr to get associated IPsec if_num in KLIPS
* get_ifnum_by_ipv4_addr: passes IPv4 src & dest addr in Big-endian form to get IPsec if_num in XFRM
*/
struct l2tpmgr_ipsecmgr_cb {
get_ipsec_ifnum_by_dev_callback_t get_ifnum_by_dev;
get_ipsec_ifnum_by_ipv4_addr_callback_t get_ifnum_by_ipv4_addr;
};
#if defined(NSS_L2TP_IPSEC_BIND_BY_NETDEV)
/**
* l2tpmgr_register_ipsecmgr_callback_by_netdev
* Register IPSecmgr callback function with l2tpmgr by netdev for KLIPS.
*
* @datatypes
* l2tpmgr_ipsecmgr_cb \n
*
* @param[in] cb IPSecmgr callback function to be registered with l2tpmgr.
*
* @return
* none
*/
void l2tpmgr_register_ipsecmgr_callback_by_netdev(struct l2tpmgr_ipsecmgr_cb *cb);
/**
* l2tpmgr_unregister_ipsecmgr_callback
* Unregister IPSecmgr callback function with l2tpmgr by netdev for KLIPS.
*
* @return
* none
*/
void l2tpmgr_unregister_ipsecmgr_callback_by_netdev(void);
#endif
/**
* l2tpmgr_register_ipsecmgr_callback_by_ipaddr
* Register IPSecmgr callback function with l2tpmgr by IP address for XFRM.
*
* @datatypes
* l2tpmgr_ipsecmgr_cb \n
*
* @param[in] cb IPSecmgr callback function to be registered with l2tpmgr.
*
* @return
* none
*/
void l2tpmgr_register_ipsecmgr_callback_by_ipaddr(struct l2tpmgr_ipsecmgr_cb *cb);
/**
* l2tpmgr_unregister_ipsecmgr_callback_by_ipaddr
* Unregister IPSecmgr callback function with l2tpmgr by IP address for XFRM.
*
* @return
* none
*/
void l2tpmgr_unregister_ipsecmgr_callback_by_ipaddr(void);
#endif