13 #include <config_netobj.h> 15 #include <dhcpclient.h> 16 #include <discoveryservlet.h> 28 #define ARP_PPP_INTERFACE (255) 66 #ifndef NB_MAC_ADDRESS 67 #define NB_MAC_ADDRESS 72 #define NB_MAC_NIC_INTERFACE (0x00) 73 #define NB_MAC_NIC_SECOND_INTERFACE (0x80) 74 #define NB_MAC_NIC_THIRD_INTERFACE (0x40) 75 #define NB_MAC_NIC_FOURTH_INTERFACE (0xC0) 76 #define NB_MAC_NIC_SECOND_INTERFACE_MASK \ 77 (NB_MAC_NIC_INTERFACE | NB_MAC_NIC_SECOND_INTERFACE | NB_MAC_NIC_THIRD_INTERFACE | NB_MAC_NIC_FOURTH_INTERFACE) 78 #define NB_MAC_OCTET_4 (3) 79 #define NB_MAC_OCTET_5 (4) 80 #define NB_MAC_OCTET_5_XOR (0x80) 115 typedef void(ProcessPacketFunc)(PoolPtr poolPtr, PEFRAME ethernetFramePtr, uint16_t checksum);
135 typedef void(ProcessArpFunc)(PoolPtr poolPtr, PEFRAME ethernetFramePtr);
153 typedef BOOL(LinkActiveFunc)(void);
163 #define INTF_CSUM_IP (0x01) 164 #define INTF_CSUM_ICMP (0x02) 165 #define INTF_CSUM_UDP (0x04) 166 #define INTF_CSUM_TCP (0x08) 167 #define INTF_CSUM_IP6 (0x10) 168 #define INTF_CSUM_ICMP6 (0x20) 169 #define INTF_CSUM_UDP6 (0x40) 170 #define INTF_CSUM_TCP6 (0x80) 172 #define INTF_CSUM_ALL4 (INTF_CSUM_IP | INTF_CSUM_ICMP | INTF_CSUM_UDP | INTF_CSUM_TCP) 173 #define INTF_CSUM_ALL6 (INTF_CSUM_IP6 | INTF_CSUM_ICMP6 | INTF_CSUM_UDP6 | INTF_CSUM_TCP6) 217 I4Record ip4{
"IPv4"};
219 I6Record ip6{
"IPv6"};
221 config_MACADR MAC{
"00:00:00:00:00:00",
"MAC"};
222 config_string device_name{
"",
"DeviceName"};
223 config_int dhcp_discover_secs{1,
"DhcpDiscoverSec"};
224 config_string discovery_server{
"discover.netburner.com/DevicePost",
"DiscoveryReportUrl"};
225 config_int discovery_interval{(15 * 60),
"DiscoveryReportInterval"};
226 config_bool obfuscate_discovery{
true,
"DiscoveryObfuscate",
"Should discovery obfuscate data"};
227 config_int vlan_tag_value{0,
"VlanTag"};
234 uint8_t checksumOffload;
237 DhcpObject dhcpClient{
this};
238 discover_servlet disco_servlet{
this};
240 #ifdef AUTOIP // if not defined don't compile anything... 241 AutoIPClient AutoClient;
243 #if defined MULTIHOME 245 MultiInterfaceBlock *pChild;
248 InterfaceBlock(
const char *name,
const char *desc =
NULL);
249 InterfaceBlock(
config_obj &owner,
const char *name,
const char *desc =
NULL);
250 void RegisterInterface();
252 virtual void send_func(PoolPtr poolPtr) = 0;
253 virtual void kill_if();
254 virtual void EnableMulticast(MACADR macAddress, BOOL addAddress) = 0;
255 virtual bool LinkActive() = 0;
256 virtual int LinkSpeed() = 0;
257 virtual bool LinkDuplex() = 0;
258 void InterfaceLinkChange(
bool link);
259 virtual const char *GetInterfaceName();
261 virtual bool bNeedsArp() {
return true; };
262 void fdShowInterfaceValues(
int fd);
263 inline void ShowInterfaceValues() { fdShowInterfaceValues(1); };
264 void SetDefaultFlags();
268 #if defined MULTIHOME 269 int RegisterMultiHomeInterface(MultiInterfaceBlock &InterfaceBlock);
274 class EtherLikeInterface :
public InterfaceBlock
278 EtherLikeInterface(
const char *name,
const char *desc =
NULL) : InterfaceBlock(name, desc)
280 ip4.SetFlag(fConfigHidden);
282 ip6.SetFlag(fConfigHidden);
284 MAC.SetFlag(fConfigHidden);
285 SetFlag(fConfigHidden);
288 EtherLikeInterface(
config_obj &owner,
const char *name,
const char *desc =
NULL) : InterfaceBlock(owner, name, desc)
290 ip4.SetFlag(fConfigHidden);
292 ip6.SetFlag(fConfigHidden);
294 MAC.SetFlag(fConfigHidden);
295 SetFlag(fConfigHidden);
298 virtual void Enable()
300 ClrFlag(fConfigHidden);
301 ip4.ClrFlag(fConfigHidden);
303 ip6.ClrFlag(fConfigHidden);
305 MAC.ClrFlag(fConfigHidden);
306 MAC.SetFlag(fConfigReadOnly);
311 int NetDoRX(PoolPtr pp, uint16_t count,
int if_num);
323 extern ProcessArpFunc *pArpFunc;
340 typedef void(ProcessIp6Func)(PoolPtr poolPtr);
342 extern ProcessIp6Func *pIp6Func;
349 extern ProcessPacketFunc *pPacketfunc;
377 void TransmitBuffer(PoolPtr poolPtr,
int interface);
396 PEFRAME GetEframe(PoolPtr poolPtr);
431 int Removeinterface(
int interface);
450 void EnableMulticast(MACADR macAddress,
int interface = 0);
451 void DisableMulticast(MACADR macAddress,
int interface = 0);
469 InterfaceBlock *GetInterfaceBlock(
int interface = 0);
487 int32_t GetFirstInterface(
void);
488 int32_t GetNextInterface(
int lastInterface);
489 int32_t GetInterfaceNumber(InterfaceBlock *pifb);
490 int32_t GetInterfaceForMyAddress4(IPADDR4 ip);
491 bool GetInterfaceLink(
int ifn);
519 BOOL InitializeNetwork(ProcessPacketFunc *processPacketFuncPtr, ProcessArpFunc *processArpFuncPtr);
537 void StopNetworks(
void);
555 MACADR InterfaceMAC(
int interface);
556 IPADDR4 InterfaceIP(
int interface);
557 IPADDR4 InterfaceAutoIP(
int interface);
558 IPADDR4 InterfaceDNS(
int interface);
559 IPADDR4 InterfaceDNS2(
int interface);
560 IPADDR4 InterfaceMASK(
int interface);
561 IPADDR4 InterfaceGate(
int interface);
562 bool InterfaceLinkActive(
int interface);
563 int InterfaceLinkSpeed(
int interface);
564 bool InterfaceLinkDuplex(
int interface);
565 const char *InterfaceName(
int interface);
Definition: config_obj.h:134
Configuration object header file.
#define NULL
Definition: nm_bsp.h:76