2.9BSD/usr/net/sys/net/in_systm.h
/* in_systm.h 4.13 82/06/24 */
/*
* Miscellaneous internetwork
* definitions for kernel.
*/
#ifndef LOCORE
/*
* Network types.
*
* Internally the system keeps counters in the headers with the bytes
* swapped so that VAX instructions will work on them. It reverses
* the bytes before transmission at each protocol level. The n_ types
* represent the types with the bytes in ``high-ender'' order.
*/
typedef u_short n_short; /* short as received from the net */
typedef u_long n_long; /* long as received from the net */
typedef u_long n_time; /* ms since 00:00 GMT, byte rev */
#endif
#if vax
#define UCHAR(a) (a)
#endif
#if pdp11
#define UCHAR(a) ((unsigned)((a) & 0xff))
#endif
/*
* The internet code runs off software interrupts.
*
* You can switch into the network by doing splnet() and return by splx().
* The software interrupt level for the network is higher than the software
* level for the clock (so you can enter the network in routines called
* at timeout time).
*/
#if vax
#define setsoftnet() mtpr(SIRR, 12)
#endif
#if pdp11 /* (V7 timeout code wont run if ANY kernel spl set) */
#define splnet spl1
#define splimp spl5
#define setsoftnet()
#define clearsoftnet()
#define NETISR_CLOCK 15 /* avoids net numbers below */
#endif
/*
* Each ``pup-level-1'' input queue has a bit in a ``netisr'' status
* word which is used to de-multiplex a single software
* interrupt used for scheduling the network code to calls
* on the lowest level routine of each protocol.
*/
#define NETISR_RAW 0 /* same as AF_UNSPEC */
#define NETISR_IP 2 /* same as AF_INET */
#define NETISR_NS 6 /* same as AF_NS */
#define schednetisr(anisr) { netisr |= 1<<(anisr); setsoftnet(); }
#ifndef LOCORE
#ifdef KERNEL
int netisr; /* scheduling bits for network */
n_time iptime();
#endif
#endif