Files
openairinterface5g/openair2/RRC/NAS/nas_config.h
T
Javier Morgade 3fbaf01eb3 Minor changes to also nable MBMS TUN interfaces with S1
ACKNOWLEDGEMENT:
 	1. This commit was developed at Vicomtech (https://www.vicomtech.org) under UE project CDN-X-ALL: "CDN edge-cloud computing for efficient cache and reliable streaming aCROSS Aggregated unicast-multicast LinkS"
 	2. Project funded by Fed4FIRE+ OC5 (https://www.fed4fire.eu)

	Signed-off-by: Javier Morgade <javier.morgade@ieee.org>
2019-09-18 12:57:22 +02:00

187 lines
7.4 KiB
C

/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file nas_config.h
* \brief Configures the nasmesh interface
* \author Daniel Camara and navid nikaein
* \date 2006-2011
* \version 0.1
* \company Eurecom
*/
#ifndef NAS_CONFIG_H_
#define NAS_CONFIG_H_
#include <netinet/in.h>
/*! \fn void void nas_getparams(void)(void)
* \brief This function get parameters used to configure network interface when running in noS1 mode
* \note
* @ingroup ?????
*/
void nas_getparams(void);
/*! \fn int NAS_config(char*, char*, char*, char*)
* \brief This function initializes the nasmesh interface
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] ipAddress, the address of the interface, e.g. 10.0.1.1
* \param[in] networkMask, the network mask to be used, e.g. 255.255.255.0
* \param[in] broadcastAddress, the broadcast address for the subnet, e.g. 10.0.1.255
* \return 0 on success, otherwise 1, if couldn't open a socket and 2 if the ioctl fails
* \note
* @ingroup ?????
*/
int NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *broadcastAddress);
/*! \fn int nas_config(char*, int, int)
* \brief This function initializes the nasmesh interface using the basic values,
* basic address, network mask and broadcast address, as the default configured
* ones
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] third octet of the ip address e.g. for the 10.1.2.3 address would be 2
* \param[in] fourth octet of the ip address e.g. for the 10.1.2.3 address would be 3
* \return 0 on success, otherwise 1, if couldn't open a socket and 2 if the ioctl fails
* \note
* @ingroup ?????
*/
int nas_config(int interface_id, int thirdOctet, int fourthOctet, char *ifsuffix);
/*! \fn int nas_config_mbms(char*, int, int)
* \brief This function initializes the nasmesh interface using the basic values,
* basic address, network mask and broadcast address, as the default configured
* ones
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] third octet of the ip address e.g. for the 10.1.2.3 address would be 2
* \param[in] fourth octet of the ip address e.g. for the 10.1.2.3 address would be 3
* \return 0 on success, otherwise 1, if couldn't open a socket and 2 if the ioctl fails
* \note
* @ingroup ?????
*/
int nas_config_mbms(int interface_id, int thirdOctet, int fourthOctet, char *ifsuffix);
/*! \fn int nas_config_mbms_s1(char*, int, int)
* \brief This function initializes the nasmesh interface using the basic values,
* basic address, network mask and broadcast address, as the default configured
* ones
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] third octet of the ip address e.g. for the 10.1.2.3 address would be 2
* \param[in] fourth octet of the ip address e.g. for the 10.1.2.3 address would be 3
* \return 0 on success, otherwise 1, if couldn't open a socket and 2 if the ioctl fails
* \note
* @ingroup ?????
*/
int nas_config_mbms_s1(int interface_id, int thirdOctet, int fourthOctet, char *ifsuffix);
/*! \fn int blocking_NAS_config(char*, char*, char*, char*)
* \brief This function initializes the nasmesh interface, in a blocking way,
* the system calls are interrupted
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] ipAddress, the address of the interface, e.g. 10.0.1.1
* \param[in] networkMask, the network mask to be used, e.g. 255.255.255.0
* \param[in] broadcastAddress, the broadcast address for the subnet, e.g. 10.0.1.255
* \return 0 on success, otherwise 1
* \note
* @ingroup ?????
*/
int blocking_NAS_config(char *interfaceName, char *ipAddress, char *networkMask, char *broadcastAddress);
/*! \fn int setInterfaceParameter(char*, char*, int)
* \brief This function sets an genneric interface parameter (SIOCSIFADDR,
* SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFFLAGS)
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] address, the value of the parameter to set, e.g. 10.0.1.255
* \param[in] operation, the operation to perform, (SIOCSIFADDR, SIOCSIFNETMASK,
* SIOCSIFBRDADDR, SIOCSIFFLAGS), e.g. SIOCSIFBRDADDR
* \return 0 on success, otherwise 1, if couldn't open a socket and 2 if the ioctl fails
* \note
* @ingroup ?????
*/
int setInterfaceParameter(char *interfaceName, char *settingAddress, int operation);
/*! \fn int set_gateway(char*, char*)
* \brief This function sets the interface gateway
* \param[in] interfaceName, the name of the interface, e.g. nasmesh0 or nasmesh1
* \param[in] address, the address of the gateway, e.g. 10.0.1.2
* \return 0 on success, otherwise 1, if couldn't open a socket and 2 if the ioctl fails
* \note
* @ingroup ?????
*/
int set_gateway(char *interfaceName, char *gateway);
/*! \fn void setBaseNetAddress(char*)
* \brief This function sets the basic network address used
* \param[in] baseAddr, the new basic address e.g.for 10.0.1.2, would be 10.0
* \note
* @ingroup ?????
*/
void setBaseNetAddress(char *baseAddr);
/*! \fn char* getBaseNetAddress()
* \brief This function returns the basic network address used
* \return the basic network address in use
* \note
* @ingroup ?????
*/
char *getBaseNetAddress(void);
/*! \fn void setNetMask(char*)
* \brief This function sets the new default network mask used
* \param[in] newNetworkMask, the new network mask e.g.for 255.255.0.0
* \note
* @ingroup ?????
*/
void setNetMask(char *baseAddr);
/*! \fn char* getNetMask()
* \brief This function returns the network mask address in use
* \return the network mask in use
* \note
* @ingroup ?????
*/
char *getNetMask(void);
/*! \fn coid setBroadcastAddress(char*)
* \brief This function sets the new broadcast address used
* \param[in] newNetworkMask, the new broadcast address e.g.for 10.0.255.255
* \note
* @ingroup ?????
*/
void setBroadcastAddress(char *baseAddr);
/*! \fn char* getBroadcastAddress()
* \brief This function returns the broadcast address in use
* \return the broadcast address in use
* \note
* @ingroup ?????
*/
char *getBroadcastAddress(void);
int bringInterfaceUp(char *interfaceName, int up);
int rb_validate_config_ipv4(int cx, int inst, int rb);
int rb_conf_ipv4(int action, int cx, int inst, int rb, int dscp, in_addr_t saddr_ipv4, in_addr_t daddr_ipv4);
void rb_ioctl_init(int inst);
int rb_stats_req(int inst);
void init_socket(void);
in_addr_t ipv4_address(int thirdOctet, int fourthOctet);
#endif /*NAS_CONFIG_H_*/