original files of m241
This commit is contained in:
@@ -0,0 +1,441 @@
|
||||
/* ipmip4_lla.h - ipmip4_lla.h */
|
||||
/*
|
||||
******************************************************************************
|
||||
* HEADER FILE
|
||||
*
|
||||
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmip4_lla.h,v $ $Revision: 1.4 $
|
||||
* $Source: /home/interpeak/CVSRoot/ipmip4/include/private/ipmip4_lla.h,v $
|
||||
* $Author: jhorteli $ $Date: 2010-12-07 09:55:10 $
|
||||
* $State: Exp $ $Locker: $
|
||||
*
|
||||
* INTERPEAK_COPYRIGHT_STRING
|
||||
* Design and implementation by Joel Hortelius <joel.hortelius@interpeak.se>
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef IPMIP4_LLA_H
|
||||
#define IPMIP4_LLA_H
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
* Utility class that provides functions to create, interpret and modify
|
||||
* LLA identifiers.
|
||||
*/
|
||||
/*
|
||||
DESCRIPTION
|
||||
|
||||
Utility class that provides functions to create, interpret and modify
|
||||
LLA identifiers. LLA identifiers are a MIP4 specific hardware definition
|
||||
used by low-latency handovers. They are not commonly used by the MIP4
|
||||
entities, unless they are to be added or parsed from a MIP4 registration
|
||||
request/reply. In all internal state and processing the LLADDR definitions
|
||||
provided by ipmip_lladdr.h are used, which are a superset of the LLA. That is,
|
||||
a LLA can be converted to a LLADDR without loss of information, but the
|
||||
reverse is not necessarily true.
|
||||
|
||||
These functions are mostly internal and used for specific events defined
|
||||
by low latency handoffs and proxy mobility registrations.
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 2 CONFIGURATION
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 3 INCLUDE FILES
|
||||
****************************************************************************
|
||||
*/
|
||||
#include <private/ipmip_lladdr.h>
|
||||
|
||||
#include <private/ipmip4_msgext.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 4 DEFINES
|
||||
****************************************************************************
|
||||
*/
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_3GPP2_MOBILE_STATION 1 /* 3GPP2 Mobile Station ID: n byte identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_3GPP_MOBILE_SUBSCRIBER 2 /* 3GPP Mobile Subscriber Id: n byte identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_MAC 3 /* Ethernet 48 bit MAC address: 6 byte identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_EUID64 4 /* EUID64 address: 8 byte identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_SOLICITED_ADDRESS 5 /* Solicited IPv4 Address: 4 byte identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_ACCESS_POINT 6 /* Access Point Identifier: 4 byte identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SUBTYPE_FA_ADDRESS 7 /* FA IPv4 Address: 4 byte identifier */
|
||||
|
||||
/* Calculate the required memory allocation depending
|
||||
* on the size of the link layer address/identifier */
|
||||
#define IPMIP4_ICMP_LLA_EXT_SIZE(llsize) ((sizeof(Ipmip4_icmp_lla_ext_t) + (llsize) - 1))
|
||||
/* The value of the 'length' field */
|
||||
#define IPMIP4_ICMP_LLA_EXT_LENGTH(llsize) ((llsize) + 1)
|
||||
/* The total size required to make a copy of an LLA */
|
||||
#define IPMIP4_ICMP_LLA_EXT_TOTAL_SIZE(lla) ((lla)->length + 2)
|
||||
/* The LLA size of an LLA */
|
||||
#define IPMIP4_ICMP_LLA_EXT_LLA_SIZE(lla) ((lla)->length - 1)
|
||||
|
||||
/* PMIPv4 definition and types */
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_802_3 1
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_802_11ABG 2
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_802_16E 3
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_802_16M 4
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_3GPP_EUTRAN_LTE 5
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_3GPP_UTRAN_GERAN 6
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_3GPP2_1XRTT_HRPD 7
|
||||
#define IPMIP4_LLA_PMIPV4_ACCESS_TECHNOLOGY_3GPP2_UMB 8
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 5 TYPES
|
||||
****************************************************************************
|
||||
*/
|
||||
struct Ipmip4_msgext_array;
|
||||
union Ipmip4_msgext_uhdr;
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 6 FUNCTIONS
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_llh_find_array_subtype - ipmip4_lla_llh_find_array_subtype
|
||||
*
|
||||
* Return a usable source LLA address based on found
|
||||
* extensions and a subtype
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i subtype
|
||||
* The specific subtype
|
||||
* \i ext
|
||||
* The found LLA extensions.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The LLA address if it found; IP_NULL Otherwise.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ipmip4_icmp_lla_ext_t * ipmip4_lla_llh_find_array_subtype
|
||||
(
|
||||
Ip_u8 subtype,
|
||||
struct Ipmip4_msgext_array *ext
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_llh_convert_array_to_lladdr - ipmip4_lla_llh_convert_array_to_lladdr
|
||||
*
|
||||
* Return a dynamically allocated source LLADDR address based on found
|
||||
* extensions and a subtype
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i lladdr
|
||||
* The LLADDR of the receiving interface
|
||||
* \i ext
|
||||
* The found LLA extensions.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The LLADDR address if it found; IP_NULL Otherwise.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ipmip_lladdr_t * ipmip4_lla_llh_convert_array_to_lladdr
|
||||
(
|
||||
Ipmip_lladdr_t *lladdr,
|
||||
struct Ipmip4_msgext_array *ext
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_llh_convert_lla_to_lladdr - ipmip4_lla_llh_convert_lla_to_lladdr
|
||||
*
|
||||
* Return a dynamically allocated source LLADDR address based on found
|
||||
* extensions and a subtype
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i lladdr
|
||||
* The LLADDR of the receiving interface
|
||||
* \i lla
|
||||
* The found LLA extension
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The LLADDR address if it found; IP_NULL Otherwise.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ipmip_lladdr_t *ipmip4_lla_llh_convert_lla_to_lladdr
|
||||
(
|
||||
Ipmip_lladdr_t *lladdr,
|
||||
Ipmip4_icmp_lla_ext_t *lla
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_llh_lladdr_buffer_icmp_append - ipmip4_lla_llh_lladdr_buffer_icmp_append
|
||||
*
|
||||
* Append an LLA to a buffer in ICMP mode
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i buf
|
||||
* A pointer to an initialized dynamic mobility buffer. See ipmip_buffer.h
|
||||
* for more information regarding dynamic buffers and their capabilities.
|
||||
* \i lla
|
||||
* The LLA
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The offset
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL int ipmip4_lla_llh_lladdr_buffer_icmp_append
|
||||
(
|
||||
Ipmip_buffer_t *buf,
|
||||
Ipmip_lladdr_t *lladdr
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_llh_lladdr_buffer_udp_append - ipmip4_lla_llh_lladdr_buffer_udp_append
|
||||
*
|
||||
* Append an LLA to a buffer in UDP mode
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i buf
|
||||
* A pointer to an initialized dynamic mobility buffer. See ipmip_buffer.h
|
||||
* for more information regarding dynamic buffers and their capabilities.
|
||||
* \i lla
|
||||
* The LLA
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The offset
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL int ipmip4_lla_llh_lladdr_buffer_udp_append
|
||||
(
|
||||
Ipmip_buffer_t *buf,
|
||||
Ipmip_lladdr_t *lladdr
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_lladdr_buffer_access_type_append - ipmip4_lla_pmipv4_lladdr_buffer_access_type_append
|
||||
*
|
||||
* Append an PMIPv4 Access Type option to a buffer based on the LLADDR
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i buf
|
||||
* A pointer to an initialized dynamic mobility buffer. See ipmip_buffer.h
|
||||
* for more information regarding dynamic buffers and their capabilities.
|
||||
* \i lladdr
|
||||
* The LLADDR
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: No return value
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL void ipmip4_lla_pmipv4_lladdr_buffer_access_type_append
|
||||
(
|
||||
Ipmip_buffer_t *buf,
|
||||
Ipmip_lladdr_t *lladdr
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_lladdr_buffer_interface_id_append - ipmip4_lla_pmipv4_lladdr_buffer_interface_id_append
|
||||
*
|
||||
* Append an PMIPv4 Interface ID option to a buffer based on the LLADDR
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i buf
|
||||
* A pointer to an initialized dynamic mobility buffer. See ipmip_buffer.h
|
||||
* for more information regarding dynamic buffers and their capabilities.
|
||||
* \i lladdr
|
||||
* The LLADDR
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: No return value
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL void ipmip4_lla_pmipv4_lladdr_buffer_interface_id_append
|
||||
(
|
||||
Ipmip_buffer_t *buf,
|
||||
Ipmip_lladdr_t *lladdr
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_lladdr_buffer_device_id_append - ipmip4_lla_pmipv4_lladdr_buffer_device_id_append
|
||||
*
|
||||
* Append an PMIPv4 Device ID option to a buffer based on the LLADDR
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i buf
|
||||
* A pointer to an initialized dynamic mobility buffer. See ipmip_buffer.h
|
||||
* for more information regarding dynamic buffers and their capabilities.
|
||||
* \i lladdr
|
||||
* The LLADDR
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: No return value
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL void ipmip4_lla_pmipv4_lladdr_buffer_device_id_append
|
||||
(
|
||||
Ipmip_buffer_t *buf,
|
||||
Ipmip_lladdr_t *lladdr
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_interface_id_convert_to_lladdr - ipmip4_lla_pmipv4_interface_id_convert_to_lladdr
|
||||
*
|
||||
* Convert a PMIPv4 interface identifier to a LLADDR type. The lladdr provided to
|
||||
* the function MUST be the corresponding interface's own LLADDR, which will be used
|
||||
* as hint when converting. The interface id does not contain any information regarding
|
||||
* interface type, since it is implicitly known by the MIP agent due to its knowledge
|
||||
* regarding serving interface.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i lladdr
|
||||
* The serving interface's link local address
|
||||
* \i ifid
|
||||
* The interface identifier
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: A newly allocated LLADDR containing the appropriate values.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ipmip_lladdr_t *ipmip4_lla_pmipv4_interface_id_convert_to_lladdr
|
||||
(
|
||||
Ipmip_lladdr_t *lladdr,
|
||||
union Ipmip4_msgext_uhdr *ifid
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_device_id_convert_to_lladdr - ipmip4_lla_pmipv4_device_id_convert_to_lladdr
|
||||
*
|
||||
* Convert a PMIPv4 device identifier to a LLADDR type. The lladdr provided to
|
||||
* the function MUST be the corresponding interface's own LLADDR, which will be used
|
||||
* as hint when converting. The device id does not contain any information regarding
|
||||
* interface type, since it is implicitly known by the MIP agent due to its knowledge
|
||||
* regarding serving interface.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i lladdr
|
||||
* The serving interface's link local address
|
||||
* \i ifid
|
||||
* The interface identifier
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: A newly allocated LLADDR containing the appropriate values.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ipmip_lladdr_t *ipmip4_lla_pmipv4_device_id_convert_to_lladdr
|
||||
(
|
||||
Ipmip_lladdr_t *lladdr,
|
||||
union Ipmip4_msgext_uhdr *ifid
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_access_type_from_lladdr_types - ipmip4_lla_pmipv4_access_type_from_lladdr_types
|
||||
*
|
||||
* Convert a LLADDR type and subtype to the corresponding access type
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i type
|
||||
* The interface major type
|
||||
* \i subtype
|
||||
* The interface minor type
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The access type corresponding to the interface values.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ip_u8 ipmip4_lla_pmipv4_access_type_from_lladdr_types
|
||||
(
|
||||
Ip_u8 type,
|
||||
Ip_u8 subtype
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ipmip4_lla_pmipv4_device_id_type_from_lladdr_types - ipmip4_lla_pmipv4_device_id_type_from_lladdr_types
|
||||
*
|
||||
* Convert a LLADDR type and subtype to the corresponding device id type
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i type
|
||||
* The interface major type
|
||||
* \i subtype
|
||||
* The interface minor type
|
||||
* \ie
|
||||
*
|
||||
* RETURNS: The device id type corresponding to the interface values.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*/
|
||||
IP_GLOBAL Ip_u8 ipmip4_lla_pmipv4_device_id_type_from_lladdr_types
|
||||
(
|
||||
Ip_u8 type,
|
||||
Ip_u8 subtype
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* END OF FILE
|
||||
****************************************************************************
|
||||
*/
|
||||
Reference in New Issue
Block a user