Inlab Scheme implements a Packet Processing subsystem, also simply called and referenced as the Packet Processor.
The basic notion is a virtual networking device which consists of a number of ports (like a switch, for example). These packet processing ports are numbered starting from 0 up to the hard coded maximum number minus 1.
Packet processing ports are starting with index 0, therefore port 0 is the first port.
atomic_ullong bytes_received;
atomic_ullong packets_received;
atomic_ullong bytes_sent;
atomic_ullong packets_sent;
pthread_rwlock_t programlock;
PPMInstructionLine program[PPMMAXPROGRAMLEN];
struct in6_addr default_outudpaddr;
int default_outudpport;
typedef struct {
int ic;
int inport;
struct in6_addr* inudpaddr;
int inudpport;
int outport;
struct in6_addr* outudpaddr;
int outudpport;
unsigned char* packet;
int packetlen;
} PPMRegisters;
This instruction ends the execution of the PPRM progam finishing the processing of the current packet.
This instruction sets the IC register to the specified value and thus performs a jump to this location.
All packet processing functionality and the control of the PP register machine is done by the following set of packet processing procedures: