142007Ssklower /* 242007Ssklower * Copyright (c) University of British Columbia, 1984 342007Ssklower * Copyright (c) 1990 The Regents of the University of California. 442007Ssklower * All rights reserved. 542007Ssklower * 642007Ssklower * This code is derived from software contributed to Berkeley by 742007Ssklower * the Laboratory for Computation Vision and the Computer Science Department 842007Ssklower * of the University of British Columbia. 942007Ssklower * 1042007Ssklower * %sccs.include.redist.c% 1142007Ssklower * 12*48873Ssklower * @(#)pk.h 7.8 (Berkeley) 04/30/91 1342007Ssklower */ 1441590Ssklower 1541590Ssklower /* 1641590Ssklower * 1741590Ssklower * X.25 Packet Level Definitions: 1841590Ssklower * 1941590Ssklower */ 2041590Ssklower 2141590Ssklower /* Packet type identifier field defintions. */ 2241590Ssklower 2341590Ssklower #define X25_CALL 11 2441590Ssklower #define X25_CALL_ACCEPTED 15 2541590Ssklower #define X25_CLEAR 19 2641590Ssklower #define X25_CLEAR_CONFIRM 23 2741590Ssklower #define X25_DATA 0 2841590Ssklower #define X25_INTERRUPT 35 2941590Ssklower #define X25_INTERRUPT_CONFIRM 39 3041590Ssklower 3141590Ssklower #define X25_RR 1 3241590Ssklower #define X25_RNR 5 3347264Ssklower #define X25_REJECT 9 3441590Ssklower #define X25_RESET 27 3541590Ssklower #define X25_RESET_CONFIRM 31 3647264Ssklower #define X25_DIAGNOSTIC 241 3741590Ssklower 3841590Ssklower #define X25_RESTART 251 3941590Ssklower #define X25_RESTART_CONFIRM 255 4041590Ssklower 4141590Ssklower /* Restart cause field definitions. */ 4241590Ssklower 4341590Ssklower #define X25_RESTART_LOCAL_PROCEDURE_ERROR 1 4441590Ssklower #define X25_RESTART_NETWORK_CONGESTION 3 4541590Ssklower #define X25_RESTART_NETWORK_OPERATIONAL 7 4641590Ssklower 4741590Ssklower /* Miscellaneous definitions. */ 4841590Ssklower 4941590Ssklower #define DATA_PACKET_DESIGNATOR 0x01 5041590Ssklower #define RR_OR_RNR_PACKET_DESIGNATOR 0x02 5141590Ssklower #define RR_PACKET_DESIGNATOR 0x04 5241590Ssklower 5341590Ssklower #define DEFAULT_WINDOW_SIZE 2 5441590Ssklower #define MODULUS 8 5541590Ssklower 5641590Ssklower #define ADDRLN 1 5741590Ssklower #define MAXADDRLN 15 5841590Ssklower #define FACILITIESLN 1 5941590Ssklower #define MAXFACILITIESLN 10 6041590Ssklower #define MAXUSERDATA 16 6141590Ssklower #define MAXCALLINFOLN 1+15+1+10+16 6241590Ssklower 6341590Ssklower #define PACKET_OK 0 6441590Ssklower #define IGNORE_PACKET 1 6541590Ssklower #define ERROR_PACKET 2 6641590Ssklower 6741590Ssklower typedef char bool; 6841590Ssklower #define FALSE 0 6941590Ssklower #define TRUE 1 7041590Ssklower 7141590Ssklower /* 7241590Ssklower * X.25 Packet format definitions 7342007Ssklower * This will eventually have to be rewritten without reference 7442007Ssklower * to bit fields, to be ansi C compliant and allignment safe. 7541590Ssklower */ 7641590Ssklower 7742007Ssklower #if BYTE_ORDER == BIG_ENDIAN 7842007Ssklower #define ORDER2(a, b) a , b 7942007Ssklower #define ORDER4(a, b, c, d) a , b , c , d 8042007Ssklower #endif 8141590Ssklower 8242007Ssklower #if BYTE_ORDER == LITTLE_ENDIAN 8342007Ssklower #define ORDER2(a, b) b , a 8442007Ssklower #define ORDER4(a, b, c, d) d , c , b , a 8541590Ssklower #endif 8641590Ssklower 8742007Ssklower typedef u_char octet; 8841590Ssklower 8942007Ssklower struct x25_calladdr { 9045292Ssklower octet ORDER2(calling_addrlen:4, called_addrlen:4); 9142007Ssklower octet address_field[MAXADDRLN]; 9245165Ssklower }; 9341590Ssklower 9441590Ssklower struct x25_packet { 9545292Ssklower octet ORDER4(q_bit:1, d_bit:1, fmt_identifier:2, lc_group_number:4); 9641590Ssklower octet logical_channel_number; 9741590Ssklower octet packet_type; 9841590Ssklower octet packet_data; 9941590Ssklower }; 10041590Ssklower 10141590Ssklower struct data_packet { 10245292Ssklower octet ORDER4(pr:3, m_bit:1, ps:3, z:1); 10341590Ssklower }; 10441590Ssklower 10542007Ssklower #define FACILITIES_REVERSE_CHARGE 0x1 10642007Ssklower #define FACILITIES_THROUGHPUT 0x2 10742007Ssklower #define FACILITIES_PACKETSIZE 0x42 10842007Ssklower #define FACILITIES_WINDOWSIZE 0x43 10942007Ssklower 11042007Ssklower #define PKHEADERLN 3 11142007Ssklower 11242007Ssklower 11341590Ssklower #define PR(xp) (((struct data_packet *)&xp -> packet_type)->pr) 11441590Ssklower #define PS(xp) (((struct data_packet *)&xp -> packet_type)->ps) 11541590Ssklower #define MBIT(xp) (((struct data_packet *)&xp -> packet_type)->m_bit) 11645451Ssklower #define LCN(xp) (xp -> logical_channel_number + \ 11745451Ssklower (xp -> lc_group_number ? (xp -> lc_group_number >> 8) : 0)) 11845451Ssklower #define SET_LCN(xp, lcn) ((xp -> logical_channel_number = lcn), \ 11945451Ssklower (xp -> lc_group_number = lcn > 255 ? lcn >> 8 : 0)) 12041590Ssklower 12145891Ssklower struct mbuf *pk_template (); 12241590Ssklower 12341590Ssklower /* Define X.25 packet level states. */ 12441590Ssklower 12541590Ssklower /* Call setup and clearing substates. */ 12641590Ssklower 12741590Ssklower #define LISTEN 0 12841590Ssklower #define READY 1 12941590Ssklower #define RECEIVED_CALL 2 13041590Ssklower #define SENT_CALL 3 13141590Ssklower #define DATA_TRANSFER 4 13241590Ssklower #define RECEIVED_CLEAR 5 13341590Ssklower #define SENT_CLEAR 6 13441590Ssklower 13541590Ssklower /* DTE states. */ 13641590Ssklower 13741590Ssklower #define DTE_WAITING 7 13841590Ssklower #define DTE_RECEIVED_RESTART 8 13941590Ssklower #define DTE_SENT_RESTART 9 14041590Ssklower #define DTE_READY 0 14141590Ssklower 14241590Ssklower #define MAXSTATES 10 14341590Ssklower 14441590Ssklower /* 14541590Ssklower * The following definitions are used in a switch statement after 14641590Ssklower * determining the packet type. These values are returned by the 14741590Ssklower * pk_decode procedure. 14841590Ssklower */ 14941590Ssklower 15041590Ssklower #define CALL 0 * MAXSTATES 15141590Ssklower #define CALL_ACCEPTED 1 * MAXSTATES 15241590Ssklower #define CLEAR 2 * MAXSTATES 15341590Ssklower #define CLEAR_CONF 3 * MAXSTATES 15441590Ssklower #define DATA 4 * MAXSTATES 15541590Ssklower #define INTERRUPT 5 * MAXSTATES 15641590Ssklower #define INTERRUPT_CONF 6 * MAXSTATES 15741590Ssklower #define RR 7 * MAXSTATES 15841590Ssklower #define RNR 8 * MAXSTATES 15941590Ssklower #define RESET 9 * MAXSTATES 16041590Ssklower #define RESET_CONF 10 * MAXSTATES 16141590Ssklower #define RESTART 11 * MAXSTATES 16241590Ssklower #define RESTART_CONF 12 * MAXSTATES 16347264Ssklower #define REJECT 13 * MAXSTATES 164*48873Ssklower #define DIAG_TYPE 14 * MAXSTATES 16547264Ssklower #define INVALID_PACKET 15 * MAXSTATES 16641590Ssklower #define DELETE_PACKET INVALID_PACKET 167