#include #include "global_state.h" #include "dynmem.h" #include "prefab/prefab.h" #include "packet_sieve.h" EthState gEthState; static void register_packet_parsers() { PcktClassDesc cdesc; // Ethernet frame parser cdesc.class = 0; cdesc.containerClass = 0; cdesc.procFun = parse_ethernet; cdesc.propertySize = sizeof(EthernetProps); packreg_add_class(E.pcktReg, &cdesc); // IPv4 packet parser cdesc.class = ETH_IPv4_PACKET_CLASS; cdesc.containerClass = 0; cdesc.procFun = parse_ipv4; cdesc.propertySize = sizeof(IPv4Props); packreg_add_class(E.pcktReg, &cdesc); // UDP packet parser cdesc.class = ETH_UDP_PACKET_CLASS; cdesc.containerClass = ETH_IPv4_PACKET_CLASS; cdesc.procFun = parse_udp; cdesc.propertySize = sizeof(UdpProps); packreg_add_class(E.pcktReg, &cdesc); } void ethlib_init() { dynmem_init(); // initialize dynamic memory subsystem E.pcktReg = packreg_new(); // create new packet registry register_packet_parsers(); // register packet parsers //E.ethIntf = ethintf_new(); // create new Ethernet interface }