pup(4f)
NAME
pup − Xerox PUP-I protocol family
SYNTAX
#include <sys/types.h>
#include <netpup/pup.h>
DESCRIPTION
The PUP-I protocol family is a collection of protocols layered atop the PUP Level-0 packet format, and utilizing the PUP Internet address format. The PUP family is currently supported only by a raw interface.
ADDRESSING
PUP addresses are composed of network, host, and port portions. The include file <netpup/pup.h> defines this address as,
structpupport {
u_charpup_net;
u_charpup_host;
u_charpup_socket[4];
};
Sockets bound to the PUP protocol family utilize the following addressing structure,
struct sockaddr_pup {
shortspup_family;
shortspup_zero1;
u_charspup_net;
u_charspup_host;
u_charspup_sock[4];
charspup_zero2[4];
};
HEADERS
The current PUP support provides only raw access to the 3Mb/s Ethernet. Packets sent through this interface must have space for the following packet header present at the front of the message,
struct pup_header {
u_shortpup_length;
u_charpup_tcontrol;/* transport control */
u_charpup_type;/* protocol type */
u_longpup_id;/* used by protocols */
u_charpup_dnet;/* destination */
u_charpup_dhost;
u_charpup_dsock[4];
u_charpup_snet;/* source */
u_charpup_shost;
u_charpup_ssock[4];
};
The sender should fill in the pup_tcontrol, pup_type, and pup_id fields. The remaining fields are filled in by the system. The system checks the message to insure its size is valid and, calulates a checksum for the message. If no checksum should be calculated, the checksum field (the last 16-bit word in the message) should be set to PUP_NOCKSUM.
The pup_tcontrol field is restricted to be 0 or PUP_TRACE; PUP_TRACE indicates packet tracing should be performed. The pup_type field may not be 0.
On input, the entire packet, including header, is provided the user. No checksum validation is performed.