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*45165Ssklower * @(#)pk.h 7.3 (Berkeley) 08/30/90 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 3341590Ssklower #define X25_RESET 27 3441590Ssklower #define X25_RESET_CONFIRM 31 3541590Ssklower 3641590Ssklower #define X25_RESTART 251 3741590Ssklower #define X25_RESTART_CONFIRM 255 3841590Ssklower 3941590Ssklower /* Restart cause field definitions. */ 4041590Ssklower 4141590Ssklower #define X25_RESTART_LOCAL_PROCEDURE_ERROR 1 4241590Ssklower #define X25_RESTART_NETWORK_CONGESTION 3 4341590Ssklower #define X25_RESTART_NETWORK_OPERATIONAL 7 4441590Ssklower 4541590Ssklower /* Miscellaneous definitions. */ 4641590Ssklower 4741590Ssklower #define DATA_PACKET_DESIGNATOR 0x01 4841590Ssklower #define RR_OR_RNR_PACKET_DESIGNATOR 0x02 4941590Ssklower #define RR_PACKET_DESIGNATOR 0x04 5041590Ssklower 5141590Ssklower #define DEFAULT_WINDOW_SIZE 2 5241590Ssklower #define MODULUS 8 5341590Ssklower 5441590Ssklower #define ADDRLN 1 5541590Ssklower #define MAXADDRLN 15 5641590Ssklower #define FACILITIESLN 1 5741590Ssklower #define MAXFACILITIESLN 10 5841590Ssklower #define MAXUSERDATA 16 5941590Ssklower #define MAXCALLINFOLN 1+15+1+10+16 6041590Ssklower 6141590Ssklower #define PACKET_OK 0 6241590Ssklower #define IGNORE_PACKET 1 6341590Ssklower #define ERROR_PACKET 2 6441590Ssklower 6541590Ssklower typedef char bool; 6641590Ssklower #define FALSE 0 6741590Ssklower #define TRUE 1 6841590Ssklower 6941590Ssklower /* 7041590Ssklower * X.25 Packet format definitions 7142007Ssklower * This will eventually have to be rewritten without reference 7242007Ssklower * to bit fields, to be ansi C compliant and allignment safe. 7341590Ssklower */ 7441590Ssklower 7542007Ssklower #if BYTE_ORDER == BIG_ENDIAN 7642007Ssklower #define ORDER2(a, b) a , b 7742007Ssklower #define ORDER3(a, b, c) a , b , c 7842007Ssklower #define ORDER4(a, b, c, d) a , b , c , d 7942007Ssklower #endif 8041590Ssklower 8142007Ssklower #if BYTE_ORDER == LITTLE_ENDIAN 8242007Ssklower #define ORDER2(a, b) b , a 8342007Ssklower #define ORDER3(a, b, c) c , 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 { 9042007Ssklower octet ORDER2(called_addrlen:4, calling_addrlen:4); 9142007Ssklower octet address_field[MAXADDRLN]; 92*45165Ssklower }; 9341590Ssklower 9441590Ssklower struct x25_packet { 9542007Ssklower octet ORDER3(lc_group_number:4, fmt_identifier:3, q_bit:1); 9641590Ssklower octet logical_channel_number; 9741590Ssklower octet packet_type; 9841590Ssklower octet packet_data; 9941590Ssklower }; 10041590Ssklower 10141590Ssklower struct data_packet { 10242007Ssklower octet ORDER4(z:1, ps:3, m_bit:1, pr:3); 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) 11641590Ssklower 11741590Ssklower struct x25_packet *pk_template (); 11841590Ssklower 11941590Ssklower /* Define X.25 packet level states. */ 12041590Ssklower 12141590Ssklower /* Call setup and clearing substates. */ 12241590Ssklower 12341590Ssklower #define LISTEN 0 12441590Ssklower #define READY 1 12541590Ssklower #define RECEIVED_CALL 2 12641590Ssklower #define SENT_CALL 3 12741590Ssklower #define DATA_TRANSFER 4 12841590Ssklower #define RECEIVED_CLEAR 5 12941590Ssklower #define SENT_CLEAR 6 13041590Ssklower 13141590Ssklower /* DTE states. */ 13241590Ssklower 13341590Ssklower #define DTE_WAITING 7 13441590Ssklower #define DTE_RECEIVED_RESTART 8 13541590Ssklower #define DTE_SENT_RESTART 9 13641590Ssklower #define DTE_READY 0 13741590Ssklower 13841590Ssklower #define MAXSTATES 10 13941590Ssklower 14041590Ssklower /* 14141590Ssklower * The following definitions are used in a switch statement after 14241590Ssklower * determining the packet type. These values are returned by the 14341590Ssklower * pk_decode procedure. 14441590Ssklower */ 14541590Ssklower 14641590Ssklower #define CALL 0 * MAXSTATES 14741590Ssklower #define CALL_ACCEPTED 1 * MAXSTATES 14841590Ssklower #define CLEAR 2 * MAXSTATES 14941590Ssklower #define CLEAR_CONF 3 * MAXSTATES 15041590Ssklower #define DATA 4 * MAXSTATES 15141590Ssklower #define INTERRUPT 5 * MAXSTATES 15241590Ssklower #define INTERRUPT_CONF 6 * MAXSTATES 15341590Ssklower #define RR 7 * MAXSTATES 15441590Ssklower #define RNR 8 * MAXSTATES 15541590Ssklower #define RESET 9 * MAXSTATES 15641590Ssklower #define RESET_CONF 10 * MAXSTATES 15741590Ssklower #define RESTART 11 * MAXSTATES 15841590Ssklower #define RESTART_CONF 12 * MAXSTATES 15941590Ssklower #define INVALID_PACKET 13 * MAXSTATES 16041590Ssklower #define DELETE_PACKET INVALID_PACKET 161