/*************************************************************** ** ** ** (C)Copyright 2006-2009, American Megatrends Inc. ** ** ** ** All Rights Reserved. ** ** ** ** 5555 Oakbrook Pkwy Suite 200, Norcross, ** ** ** ** Georgia - 30093, USA. Phone-(770)-246-8600. ** ** ** **************************************************************** * Filename: nwcfg.h * * Description: Contains code for the basic network library APIs. * ****************************************************************/ #ifndef _NWCFG_H #define _NWCFG_H #include #include #include //#include //#include "hostname.h" #include #include // /* External dependencies */ // #define PROC_NET_ROUTE_FILE "/proc/net/route" // /* ipv6 */ // #define PROC_NET_IPV6ROUTE_FILE "/proc/net/ipv6_route" // #define DHCPD_PID_FILE "/var/run/udhcpc.eth0.pid" // #define DHCP6C_PID_FILE "/var/run/dhcp6c.pid" // #define DHCPD_CONFIG_FILE "/conf/dhcpc-config" // #define DHCPD_CONFIG_FILE_TEMP "/var/dhcp-config.tmp" // #define RESOLV_CONF_FILE "/conf/resolv.conf" // #define RESOLV_CONF_DISABLED_FILE "/conf/resolv_disabled.conf" // #define RESOLV_CONF_FILE_TEMP "/var/resolv.conf.tmp" // #define DNS_CONFIG_FILE "/conf/dns.conf" // #define DNS_CONFIG_FILE_TEMP "/var/dns.conf.tmp" // #define IFUP_BIN_PATH "/sbin/ifup" // #define IFDOWN_BIN_PATH "/sbin/ifdown" #define ZERO_IP "0.0.0.0" #define DEFAULT_GW_STR "0.0.0.0" /* /etc/network/interfaces file defines */ // #define NETWORK_IF_FILE "/etc/network/interfaces" // #define NETWORK_IF_FILE_TMP "/conf/interfaces.tmp" // #define NETWORK_DNS_TMP "/conf/dns.tmp" // #define NETWORK_IP_SRC_FILE "/conf/ipaddrsource" #define AUTO_LOCAL_STR "auto lo\n" #define AUTO_LOCAL_LOOPBACK_STR "iface lo inet loopback\n" #define IF_STATIC_IP_STR "address" #define IF_STATIC_MASK_STR "netmask" #define IF_STATIC_BCAST_STR "broadcast" #define IF_STATIC_GW_STR "gateway" #define IF_STATIC_MTU_STRING "mtu" #define DEFAULT_GW_FLAGS 0x0003 // #define DEV_FILE "/proc/net/dev" // #define VLAN_ID_SETTING_STR "vlanid" // #define VLAN_INTERFACES_FILE "/conf/vlaninterfaces" // #define VLAN_PRIORITY_SETTING_STR "vlanpriority" // #define VLAN_INDEX_STR "index" // #define VLANSETTING_CONF_FILE "/conf/vlansetting.conf" // #define VLAN_NETWORK_DECONFIG_FILE "/etc/init.d/vlannetworking stop" // #define VLAN_NETWORK_CONFIG_FILE "/etc/init.d/vlannetworking start" // #define VLAN_ONLY_IFDOWN "/etc/init.d/vlannetworking downvlan" // #define VLAN_PROC_SYS_RAC_NCSI_ENABLE_LAN "echo 1 > /proc/sys/ractrends/ncsi/Enable" // #define VLAN_NETWORK_IP_CONFIGFILE "/etc/init.d/vlannetworking enableip" // #define IF_STATIC_ADDR_STR " pre-up ip addr add" // /*Bond*/ // #define BONDING_CONF_FILE "/conf/bond.conf" // #define BONDING_SYSTEM_FILE "/sys/class/net" #define IFACE_ENABLED 0x01 #define IFACE_DISABLED 0x00 #define BOND_ROUND_ROBIN 0x00 #define BOND_ACTIVE_BACKUP 0x01 #define MAX_BOND_MODE 0x06 #define MAX_BOND 0x03 #define ETH_IFACE_TYPE 0x01 #define BOND_IFACE_TYPE 0x02 #define BOND_MAX_SLAVE 8 #define MAX_CHANNEL 0x04 #define MAX_ETH 5 ///* IPv6 */ //#define KERNEL_IPV6_FILE "/proc/net/if_inet6" #define MAX_MAC_LEN 64 #define MAC_ADDR_LEN 6 #define IP_ADDR_LEN 4 #define IP6_ADDR_LEN 16 #define MAX_STR_LENGTH 128 #define ROUTE_GW_LENGTH 100 #define MAX_IPV6ADDRS 16 #define DOMAIN_DHCP_LEN 7 #define LOOPBACK_ADDR_LEN 9 #define STR1_LEN 1 #define STR2_LEN 2 #define STR3_LEN 3 #define STR4_LEN 4 #define STR5_LEN 5 /* DNS */ #define MAX_HOST_NAME_STRING_SIZE 64 #define MAX_DOMAIN_NAME_STRING_SIZE 256 #define HOSTNAME_SETTING_MANUAL 0 #define HOSTNAME_SETTING_AUTO 1 #define ONELINE_LEN 300 #define DNS_SERVERIP_LEN 26 #define REG_BMC_ENABLE 0x01 //0th bit enable of BMC register #define REG_BMC_TSIG 0x02 //1st bit enable of BMC register #define REG_BMC_FQDN 0x10 //DHCP Option 81 #define REG_BMC_HOSTNAME 0x20 //DHCP Option 12 #define REG_BMC_RESERVED 0xCE //Binary value 1100 1110 #define REG_BMC_RESERVED_TSIG 0xFD //Binary value 1111 1101 /* TSIG Configuration */ // #define CONF_LOCATION "/conf/" // #define TEMP_LOCATION "/tmp/" // #define TSIG_PRIVATE_FILE "tsig.private" // #define CONF_TSIG_PRIVATE_FILE CONF_LOCATION TSIG_PRIVATE_FILE // #define TEMP_TSIG_PRIVATE_FILE TEMP_LOCATION TSIG_PRIVATE_FILE // #define MAX_TSIG_PRIVKEY_SIZE (8 * 1024) // #define TSIG_ALG_TYPE_HMAC_MD5 "Algorithm: 157 (HMAC_MD5)\n" /* Type of network configuration */ #define CFGMETHOD_STATIC 1 #define CFGMETHOD_DHCP 2 #define CFGMETHOD_BIOS 3 #define CFGMETHOD_OTHER 4 #define NWCFGTYPE_STATIC 0x1 #define NWCFGTYPE_DHCP 0x2 #define NWCFGTYPE_DHCPFIRST 0x4 /*Interface enable state*/ #define NW_INTERFACE_ENABLE 0x1 #define NW_INTERFACE_DISABLE 0x2 #define NW_INTERFACE_UNKNOWN 0x3 #define NW_AUTO_NEG_ON 0x1 #define NW_AUTO_NEG_OFF 0x2 #define NW_DUPLEX_FULL 0x1 #define NW_DUPLEX_HALF 0x2 /* * ETHSET FLAG: See nwSetNWExtEthCfg API */ #define NWEXT_ETHCFG_LAMAC 0x1 #define NWEXT_ETHCFG_BURNEDMAC 0x2 #define NWEXT_ETHCFG_SPEED 0x4 #define NWEXT_ETHCFG_DUPLEX 0x8 #define NWEXT_ETHCFG_AUTONEG 0x10 #define NWEXT_ETHCFG_MTU 0x20 #define NWEXT_ETHCFG_WOL 0x40 #define NWEXT_ETHCFG_ALL (NWEXT_ETHCFG_LAMAC \ | NWEXT_ETHCFG_BURNEDMAC \ | NWEXT_ETHCFG_SPEED \ | NWEXT_ETHCFG_DUPLEX \ | NWEXT_ETHCFG_AUTONEG \ | NWEXT_ETHCFG_MTU \ | NWEXT_ETHCFG_WOL) /* * NWSET FLAG: See nwSetNWExtIPCfg API */ #define NWEXT_IPCFG_INTFSTATE 0x1 #define NWEXT_IPCFG_CFGMETHOD 0x2 #define NWEXT_IPCFG_IP 0x4 #define NWEXT_IPCFG_MASK 0x8 #define NWEXT_IPCFG_GW 0x10 #define NWEXT_IPCFG_FBIP 0x20 #define NWEXT_IPCFG_FBMASK 0x40 #define NWEXT_IPCFG_FBGW 0x80 #define NWEXT_IPCFG_ALL (NWEXT_IPCFG_INTFSTATE \ | NWEXT_IPCFG_CFGMETHOD \ | NWEXT_IPCFG_FBIP \ | NWEXT_IPCFG_FBMASK \ | NWEXT_IPCFG_FBGW \ | NWEXT_IPCFG_IP \ | NWEXT_IPCFG_MASK \ | NWEXT_IPCFG_GW) #define MAX_RESTART_SERVICE 4 #define MAX_SERVICE 5 /*Used to check the flag status*/ #define CHECK_FLAG(in,level) ((in&level) == level) /*Used to set flag value*/ #define SET_FLAG(out,level) (out|=level) /* Enable or disable Auto-Negotiation */ #define AUTONEG_DISABLE 0x00 #define AUTONEG_ENABLE 0x01 /* Network Link modes */ #define PHY_SPEED_10 10 #define PHY_SPEED_100 100 #define PHY_SPEED_1000 1000 #define PHY_DUPLEX_HALF 0x0 #define PHY_DUPLEX_FULL 0x1 #define PHY_SPEED_AN_MASK 0x8000 /*Auto-Negotiation Mask for Speed*/ #define PHY_DUPLEX_AN_MASK 0x4000 /*Auto-Negotiation Mask for Duplex*/ /* MII registers for PHY */ #define MII_BMCR 0x00 /* Basic mode control register */ #define MII_BMSR 0x01 /* Basic mode status register */ #define MII_PHY_ID1 0x02 /* PHY identifier 1 */ #define MII_PHY_ID2 0x03 /* PHY identifier 2 */ #define MII_ADVERTISE 0x04 /* Advertisement control reg */ #define MII_LPA 0x05 /* Link partner ability reg */ #define MII_EXPANSION 0x06 /* Expansion register */ #define MII_CTRL1000 0x09 /* 1000BASE-T control */ #define MII_STAT1000 0x0a /* 1000BASE-T status */ /* Mask for BMCR Register settings for Speed/Duplex */ #define PHY_BMCR_10_FD 0x0100 #define PHY_BMCR_10_HD 0x0000 #define PHY_BMCR_100_FD 0x2100 #define PHY_BMCR_100_HD 0x2000 #define PHY_BMCR_1000_FD 0x1140 #define PHY_BMCR_AUTO_NEG 0x3000 /* Mask for ADVERTISE Register settings for Speed/Duplex */ #define PHY_ADV_AUTO_NEG 0x05e1 #define PHY_ADV_1000_FD 0x0401 /* Mask for Gigabit Control Register settings for Speed/Duplex */ #define PHY_GBCR_AUTO_NEG 0x0300 #pragma pack (1) typedef struct { uint8_t AutoNegotiationEnable; uint16_t Speed; uint8_t Duplex; uint8_t Interface; uint8_t CapabilitiesSupported; } PHYConfig_T; typedef struct { uint8_t Enable; /*Enable/Disable*/ uint8_t BondIndex; /*Index value of Bond Interface*/ uint8_t BondMode; /*Bond Mode*/ uint16_t MiiInterval; /*MII Interval*/ uint8_t Slaves; /*Each bit represents the interface Index value i.e 0-7*/ uint8_t AutoConf; } BondIface; typedef struct{ unsigned char CfgMethod; /* This field can either be NWCFGTYPE_DHCP or NWCFGTYPE_STATIC */ unsigned char MAC[6]; unsigned char Local_MAC[6]; unsigned char IPAddr[4]; unsigned char Broadcast[4]; unsigned char Mask[4]; unsigned char Gateway[4]; unsigned char BackupGateway[4]; /* If interface is enabled, value is * NW_INTERFACE_ENABLE otherwise NW_INTERFACE_DISABLE */ unsigned char enable; unsigned char IFName[10]; unsigned short VLANID; unsigned char vlanpriority; unsigned char Master; unsigned char Slave; unsigned char BondIndex; } NWCFG_STRUCT; /*ipv6*/ typedef struct{ unsigned char enable; unsigned char MAC[6]; unsigned char CfgMethod; /* This field can either be NWCFGTYPE_DHCP or NWCFGTYPE_STATIC */ unsigned char LinkIPAddr[16]; unsigned char LinkPrefix; unsigned char SiteIPAddr[16]; unsigned char SitePrefix; unsigned char GlobalIPAddr[MAX_IPV6ADDRS][16]; //anyCast Globel address //UniCast Globel address unsigned char GlobalPrefix[MAX_IPV6ADDRS]; unsigned char Gateway[16]; unsigned char IFName[10]; } NWCFG6_STRUCT; typedef struct { unsigned char Enable; unsigned short MiiInterval; unsigned char BondMode; unsigned char Slave; } BondConf; typedef struct { unsigned char Upslave; } ActiveConf; typedef struct { int8_t Ifcname[16]; uint8_t Index; uint8_t Enabled; } IfcName_T; typedef struct{ unsigned short Family; NWCFG_STRUCT IPv4; NWCFG6_STRUCT IPv6; } ALL_NWCFG_STRUCT; typedef struct{ NWCFG_STRUCT NwInfo[10]; int IFCount; } NWCFGS; typedef struct { /* This field can either be NW_DUPLEX_FULL or NW_DUPLEX_HALF */ unsigned long speed; /* This field can either be NW_DUPLEX_FULL or NW_DUPLEX_HALF */ unsigned int duplex; /* This field can either be NW_AUTO_NEG_ON or NW_AUTO_NEG_OFF, * Auto negotiation is applicable for both speed & duplex. */ unsigned int autoneg; /* This field features the link modes that are supported by the interface */ unsigned char supported; /*Max transmission unit*/ unsigned long maxtxpkt; unsigned long wolsupported; unsigned long wolopts; } ETHCFG_STRUCT; typedef struct{ ETHCFG_STRUCT EthInfo[10]; } ETHCFGS; typedef struct{ /* Name of the interface, example: eth0, eth1, ethernet,...*/ char IFName[10]; /* * This field can either be NWCFGTYPE_DHCP or * NWCFGTYPE_STATIC or NWCFGTYPE_DHCPFIRST */ unsigned char CfgMethod; /* * If interface is enabled, value is NW_INTERFACE_ENABLE * otherwise NW_INTERFACE_DISABLE */ unsigned char Enable; /* * Current IP Origin NWCFGTYPE_DHCP or NWCFGTYPE_STATIC */ unsigned char IPOrigin; /* * IP assigned: If IPOrgin is DHCP, then this is DHCP IP, * if the IPOrigin is Static, then this is Static IP address */ unsigned char IPAddr[4]; unsigned char Mask[4]; unsigned char Gateway[4]; /* * Manually configured Fall back (FB) IP */ unsigned char FB_IPAddr[4]; unsigned char FB_Mask[4]; unsigned char FB_Gateway[4]; } NWEXT_IPCFG; typedef struct { /*Burned-in MAC address*/ unsigned char BurnedMAC[6]; /* Locally admin-MAC: Setting Local MAC to other than 00:00:00:00:00:00 * makes it as current MAC. If a platform does not support. If this is * non-zero then this is current MAC while getting */ unsigned char Local_MAC[6]; } NWEXT_MACCFG; typedef struct { /* MAC Configuration */ NWEXT_MACCFG mac_cfg; /* Ethernet Configuration */ ETHCFG_STRUCT eth_cfg; } NWEXT_ETHCFG; typedef struct { unsigned char DNSDhcpEnable; /*Specifies that the DNS server IP addresses should be assigned from the DHCP server*/ unsigned char DNSServerEthIndex; /*Specifies that from which DHCP server the IP addresses should be assigned */ unsigned char DNSServer1[IP_ADDR_LEN]; /*Specifies the IP address for DNS server 1*/ unsigned char DNSServer2[IP_ADDR_LEN]; /*Specifies the IP address for DNS server 2*/ unsigned char v4v6; unsigned char RegisterBMCFQDN[MAX_CHANNEL]; /*Register the BMC host name using FQDN method */ unsigned char DNSRegisterBMC[MAX_CHANNEL]; /*Enable registering the BMC host name on the DNS server*/ unsigned char DNSBMCHostSetting; /*Specifies host name is Automatic or Manual */ unsigned char DNSBMCHostNameLen; unsigned char DNSBMCHostName[MAX_HOST_NAME_STRING_SIZE]; /*Specifies the DNS BMC host name*/ unsigned char DNSDomainNameDhcpEnable; /*Specifies that the DNS domain name should be assigned from the DHCP server*/ unsigned char DNSDomainNameEthIndex; /*Specifies that from which DHCP server the DNS domain name should be assigned */ unsigned char DNSDomainNameLen; unsigned char DNSDomainName[MAX_DOMAIN_NAME_STRING_SIZE];/*The DNS domain name string*/ } DNS_CONFIG; #define DNSCFG_MAX_DOMAIN_NAME_LEN 256 //with null #define DNSCFG_MAX_RAC_NAME_LEN 64 /*DNS-Manual enable state*/ #define DNS_MANUAL_ENABLE 0x1 #define DNS_MANUAL_DISABLE 0x2 typedef struct { unsigned char dnsEnable; unsigned char manualDNSDomain1Length; char manualDNSDomainName1[DNSCFG_MAX_DOMAIN_NAME_LEN]; unsigned char manualDNSDomain2Length; char manualDNSDomainName2[DNSCFG_MAX_DOMAIN_NAME_LEN]; struct in_addr manualDNSServer1; struct in_addr manualDNSServer2; struct in_addr manualDNSServer3; } MANUAL_DNS_CONFIG; // /*********************************/ // /* DNS Configuration structures */ // /*********************************/ // #define DOMAIN_V4 1 // #define DOMAIN_V6 2 // #define CONFDNSCONF "/conf/dns.conf" // #define CONFDNSCONF_TMP "/conf/dns.conf.tmp" // typedef struct // { // uint8_t HostSetting; /*Specifies host name is Automatic or Manual */ // uint8_t HostNameLen; // uint8_t HostName[MAX_HOSTNAME_LEN]; Specifies the DNS BMC host name // } HOSTNAMECONF; // typedef struct // { // uint8_t dhcpEnable; // uint8_t EthIndex; // uint8_t v4v6; // uint8_t domainname[DNSCFG_MAX_DOMAIN_NAME_LEN]; // uint8_t domainnamelen; // } DOMAINCONF; // typedef struct // { // uint8_t DNSIP1[IP6_ADDR_LEN]; // uint8_t DNSIP2[IP6_ADDR_LEN]; // uint8_t DNSIP3[IP6_ADDR_LEN]; // uint8_t DNSEnable; // uint8_t DNSDHCP; // uint8_t DNSIndex; // uint8_t IPPriority; // } DNSCONF; /* Define the network interface */ typedef enum { PENDING=1, // Interface having configured/pending settings ACTIVE // Interface having current/active settings }NW_INTERFACE; typedef struct { uint8_t param; uint8_t NwRestartNeeded; } MONSETLANPARAM_STRUCT; // typedef struct // { // NWCFG_STRUCT cfgIPv4[MAX_ETH]; // NWCFG6_STRUCT cfgIPv6[MAX_ETH]; // BondIface BondConfig; // PHYConfig_T PHYConfig[MAX_ETH]; // unsigned short mtu_size[MAX_ETH]; // HOSTNAMECONF HostnameConfig; // DOMAINCONF DomainConfig; // uint8_t regBMC_FQDN[MAX_CHANNEL]; // uint8_t TypeOfService[MAX_ETH]; // DNSCONF DnsIPConfig; // } DELAYEDLANRESTART_NWDATA; #pragma pack () // /* Functions to read/write current network status */ // int nwReadNWCfgs(NWCFGS *cfg, ETHCFGS *ethcfg); // int IsLinkModeSupported(ETHCFG_STRUCT *ethcfg,uint16_t speed,uint8_t duplex); // int nwGetEthInformation(ETHCFG_STRUCT *ethcfg, char * IFName); // int nwSetEthInformation(unsigned long speed, unsigned int duplex, char * IFName); // int nwWriteNWCfgNoUpDown(NWCFG_STRUCT *cfg); // int nwSetEthMTUSize(int mtu, char * IFName); // int nwSetBkupGWyAddr(unsigned char *ip,uint8_t EthIndex); // int nwGetBkupGWyAddr(unsigned char *ip,uint8_t EthIndex); // /* One should pass the buffer of size MAX_MAC_LEN to the following function */ // int nwGetMACAddr(char *MAC); // int nwSetMACAddr(char *MAC, int Index); // int nwSetGateway(uint8_t* GwIP,uint8_t EthIndex); // int nwDelExistingGateway(uint8_t EthIndex); // /* Functions to set/get MDIO PHY registers */ // /* These can be used by OEMs to monitor/control the speed/duplex of the PHY */ // int nwGetPHYRegister(char regNo, char *IfcName); // int nwSetPHYRegister(unsigned short regValue, char regNo, char *IfcName); // /* Function to generate an IPv6 address based on EUI-64 algo */ // int nwFormIPv6Addr_EUI64(uint8_t *IPv6Addr, uint8_t EthIndex, int GlobalIPv6); // int nwGetNWInformations(NWCFG_STRUCT *cfg,char *IFName); // int nwMakeIFDown(uint8_t EthIndex); // int nwMakeIFUp(uint8_t EthIndex); // extern void GetNwCfgInfo(void); // extern int GetNoofInterface(void); // /* Extended API for network*/ // int GetHostEthbyIPAddr(char *IPAddr); // int GetHostEthByIPv6Addr(char *IPAddr); // int GetIfcNameByIndex(int Index, char * IfcName); // int nwGetSrcMacAddr(uint8_t* IpAddr,uint8_t EthIndex,uint8_t *MacAddr); // int nwGetSrcCacheMacAddr(uint8_t* IpAddr, uint8_t EthIndex, uint8_t *MacAddr); // int nwGetSrcMacAddr_IPV6(uint8_t* IpAddr,uint8_t *MacAddr); // int nwGetNWExtEthCfg(NWEXT_ETHCFG *cfg); // int nwGetNWInterfaceStatus(void); // int nwSetNWExtEthCfg(NWEXT_ETHCFG *cfg, int nwSetFlag); // int nwSetNWExtIPCfg (NWEXT_IPCFG *cfg, int nwSetFlag,int global_ipv6); // int GetNwLinkStatus(int fd,char *ifname); // int GetNwLinkType_mii(char *ifname); // /** // *@fn nwUpdateVLANInterfacesFile // *@brief This function is invoked to update vlan interfaces file // */ // int nwUpdateVLANInterfacesFile(void); // /** // *@fn ReadVLANFile // *@brief This function is invoked to read the vlan configuration files // *@param SettingStr - Pointer to setting name that we want to read from vlan configurations file // *@param desArr - pointer to an array where the reading has to be stored // */ // int ReadVLANFile(char *SettingStr, uint16_t *desArr); // /** // *@fn WriteVLANFile // *@brief This function is invoked to write all the vlan configuration files // *@param SettingStr - Pointer to setting name that we want to write into vlan configurations file // *@param desArr - pointer to an array where the reading has to be stored // *@param EthIndex - char value to Ethernet index // *@param val - short int to the value that has to be written // */ // int WriteVLANFile(char *SettingStr, uint16_t *desArr, uint8_t EthIndex, uint16_t val); // /*ipv6*/ // void ConvertIP6numToStr(unsigned char *var, unsigned int len,unsigned char *string) ; // int nwReadNWCfg_IPv6(NWCFG6_STRUCT *cfg,uint8_t EthIndex); // int GetDefaultGateway_ipv6(unsigned char *gw,uint8_t *Interface); // int nwGetResolvConf_v4_v6(char* DNS1,char*DNS2,char *DNS3, uint8_t DNSIPPriority,char* domain,unsigned char* domainnamelen); // /** // *@fn nwReadNWCfg_v4_v6 // *@brief This function is invoked to Get the current network status of both IPv4 and IPv6 networks. // *@ If there is no need of IPv6 data means, then just pass NULL to IPv6 pointer. // *@param cfg - Pointer to Structure used to get IPv4 network configurations. // *@param cfg6 - Pointer to Structure used to get IPv6 network configurations. // *@param EthIndex - pointer to char used to store Interface Index value. // *@return Returns 0 on success and -1 on fails // */ // int nwReadNWCfg_v4_v6(NWCFG_STRUCT *cfg, NWCFG6_STRUCT *cfg6, uint8_t EthIndex,int global_ipv6); // /** // *@fn nwWriteNWCfg_ipv4_v6 // *@brief This function is invoked to set both IPv4 and IPv6 network configurations. // *@ If there is no need to write IPv6 data means, then just pass NULL to IPv6 pointer. // *@param cfg - Pointer to Structure used to set IPv4 network configurations // *@param cfg6 - Pointer to Structure used to set IPv6 network configurations // *@param EthIndex - pointer to char used to store Interface Index value. // *@return Returns 0 on success and -1 on fails // */ // int nwWriteNWCfg_ipv4_v6(NWCFG_STRUCT *cfg, NWCFG6_STRUCT *cfg6, uint8_t EthIndex); // * @fn nwConfigureBonding // * @brief This function will Enable/Disable the bonding support // * @param BondCfg [in] Bonding configuration table // * @param BondIndex [in] Index value of Bond interface to be configured // * @return 0 on success, -1 on failure // int nwConfigureBonding(BondIface *BondCfg,uint8_t EthIndex,int timeoutd_sess_timeout,int global_ipv6); // /* // * @fn nwGetBondConf // * @brief This function will Get the bonding Configuration of Specified index // * @param BondCfg [out] Bonding configuration table // * @param BondIndex [in] Index value of Bond interface // * @return 0 on success, -1 on failure // */ // int nwGetBondConf(BondIface *BondCfg,uint8_t BondIndex); // /* // * @fn CheckIfcEntry // * @brief This function will check the interface presence in ifcname table // * @param Index [in] index value // * @param IfcType [in] interface type // * @return 0 in success, -1 on failure // */ // int CheckIfcEntry(uint8_t Index,uint8_t IfcType); // /* // * @fn CheckBondSlave // * @brief This function will check the given interfaces slave status // * @param EthIndex[in] interface's Ethindex value // * @returns 1 if the interface is a slave of any bond interface, otherwise 0 // */ // int CheckBondSlave(uint8_t EthIndex); // /* // * @fn CheckIfcLinkStatus // * @brief This function will check the interface's Link health // * @param Index [in] index value // * @return -1 on failure // */ // int CheckIfcLinkStatus(uint8_t Index); // /* // * @fn InitIfcNameTable // * @brief This function is used to initialize the Ifcname table based on NIC count // * @return -1 on failure // */ // int InitIfcNameTable(); // /** // *@fn IsKernelIPv6Enabled // *@brief This function is used to check for IPv6 support in the kernel. // *@return Returns 1 on success and 0 on fails // */ // int IsKernelIPv6Enabled(); // /* // * @fn nwActiveSlave // * @brief This function will active the single slave for the bonding interface // * @param SlaveIndex to be activated // * @return 0 on success, -1 on failure // */ // int nwActiveSlave(uint8_t BondIndex,uint8_t SlaveIndex); // /* // * @fn nwGetActiveSlave // * @brief This function will gets the active interface of specified bondindex // * @param Bondindex [in] bonding index, Activeindex[out] active slaves // * @return 0 on success, -1 on failure // */ // int nwGetActiveSlave(uint8_t BondIndex,uint8_t *ActiveIndex); // /** // *@fn Write_dhcp6c_conf // *@brief This function is used to write interface wise entries for dhcp6c.conf file. // *@return Returns 0 on success and -1 on fails // */ // int Write_dhcp6c_conf(); // /** // *@fn IsValidGlobalIPv6Addr // *@brief This function will check the given IPv6 address as global IP address or not // *@return Return 0 on success and -1 on failure // */ // int IsValidGlobalIPv6Addr(struct in6_addr * IPv6Addr); // /* DNS */ // int nwSetResolvConf_v4_v6(char* dns1,char* dns2,char* dnsv3,char* domain); // int ReadDNSConfFile ( DOMAINCONF *DomainConfig, DNSCONF *DnsIPConfig,uint8_t *regBMC_FQDN); // int WriteDNSConfFile ( DOMAINCONF *DomainConfig, DNSCONF *DnsIPConfig, uint8_t *regBMC_FQDN); // int nwGetAllDNSConf( HOSTNAMECONF *HostnameConfig, DOMAINCONF *DomainConfig, DNSCONF *DnsIPConfig,uint8_t *regBMC_FQDN ); // int nwSetAllDNSConf( HOSTNAMECONF *HostnameConfig, DOMAINCONF *DomainConfig, DNSCONF *DnsIPConfig,uint8_t *regBMC_FQDN ); // /* Library for AMI Extended DNS command */ // int nwSetHostName(char *name); // int nwGetDNSConf(unsigned char* UseDHCPForDNS,unsigned char* UseDHCPForDomain,unsigned char* DoDDNS); // int nwGetAllDNSCfg(DNS_CONFIG* dnscfg); // int nwSetDNSConf(unsigned char UseDHCPForDNS,unsigned char UseDHCPForDomain,unsigned char DoDDNS); // int nwSetAllDNSCfg_NotRestart(DNS_CONFIG* dnscfg); // int nwGetDHCPServerIP(char *dhcpServerIP); // /*! // * @brief Reading current/active network configuration using netman script // * #param[out] cfg - IP, Netmask, Gateway, Conf method(dhcp/statis) // * @returns 0 on succee , -1 on failure // */ // int nwGetNwActIPCfg( NWEXT_IPCFG *cfg ); // int GetIPAdrressType(uint8_t* IPAddr); // int nwSyncNWCfg_ipv4_v6(NWCFG_STRUCT *cfg,NWCFG6_STRUCT *cfg6, uint8_t EthIndex); // /** // *@fn GetIPAddrstr // *@brief This function is used to get IP address string for given ip or hostname // *@param addr - pointer to string of IP address of hostname // *@param pResIPaddr - pointer to IP address string // *@return Returns address family (AF_INET or AF_INET6) on success and -1 on failure // */ // int GetIPAddrstr(unsigned char *addr, char *pResIPaddr); // int getFullyQualifiedDName(char *fqdname, uint8_t EthIndex); // int nwGetExtMACAddr(unsigned char *MAC); // /* // * @fn IsBMCNFSMode // * @brief Check whether BMC is in BMC Mode. // * @return 0 for FALSE, // * 1 for TRUE. // */ // int IsBMCNFSMode(); // int nwSyncBondCfg(BondIface *pBondCfg); // void GetNwStruct_v4_v6(NWCFG_STRUCT *pCFGIPv4,NWCFG6_STRUCT *pCFGIPv6); // int HandleDelayedNwRestart(DELAYEDLANRESTART_NWDATA *pDelyedLAN_NwCfgs, uint8_t Flag_SetDNS, uint8_t EthIndex); // int SetNWSpeed(PHYConfig_T *pPHYConfig, char * IFName); // int SetNWMTUSize(int mtu, char * IFName); // int SetVLANPriority(uint16_t vlanID, uint8_t VLANPriority, uint8_t TypeOfService, char *IfcName); #endif /* _NWCFG_H */