1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * These are the public elements of the Linux kernel AX.25 code. A similar 3*53ee8cc1Swenshuai.xi * file netrom.h exists for the NET/ROM protocol. 4*53ee8cc1Swenshuai.xi */ 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi #ifndef AX25_KERNEL_H 7*53ee8cc1Swenshuai.xi #define AX25_KERNEL_H 8*53ee8cc1Swenshuai.xi 9*53ee8cc1Swenshuai.xi #include <linux/socket.h> 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi #define AX25_MTU 256 12*53ee8cc1Swenshuai.xi #define AX25_MAX_DIGIS 8 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi #define AX25_WINDOW 1 15*53ee8cc1Swenshuai.xi #define AX25_T1 2 16*53ee8cc1Swenshuai.xi #define AX25_N2 3 17*53ee8cc1Swenshuai.xi #define AX25_T3 4 18*53ee8cc1Swenshuai.xi #define AX25_T2 5 19*53ee8cc1Swenshuai.xi #define AX25_BACKOFF 6 20*53ee8cc1Swenshuai.xi #define AX25_EXTSEQ 7 21*53ee8cc1Swenshuai.xi #define AX25_PIDINCL 8 22*53ee8cc1Swenshuai.xi #define AX25_IDLE 9 23*53ee8cc1Swenshuai.xi #define AX25_PACLEN 10 24*53ee8cc1Swenshuai.xi #define AX25_IAMDIGI 12 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi #define AX25_KILL 99 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi #define SIOCAX25GETUID (SIOCPROTOPRIVATE+0) 29*53ee8cc1Swenshuai.xi #define SIOCAX25ADDUID (SIOCPROTOPRIVATE+1) 30*53ee8cc1Swenshuai.xi #define SIOCAX25DELUID (SIOCPROTOPRIVATE+2) 31*53ee8cc1Swenshuai.xi #define SIOCAX25NOUID (SIOCPROTOPRIVATE+3) 32*53ee8cc1Swenshuai.xi #define SIOCAX25OPTRT (SIOCPROTOPRIVATE+7) 33*53ee8cc1Swenshuai.xi #define SIOCAX25CTLCON (SIOCPROTOPRIVATE+8) 34*53ee8cc1Swenshuai.xi #define SIOCAX25GETINFOOLD (SIOCPROTOPRIVATE+9) 35*53ee8cc1Swenshuai.xi #define SIOCAX25ADDFWD (SIOCPROTOPRIVATE+10) 36*53ee8cc1Swenshuai.xi #define SIOCAX25DELFWD (SIOCPROTOPRIVATE+11) 37*53ee8cc1Swenshuai.xi #define SIOCAX25DEVCTL (SIOCPROTOPRIVATE+12) 38*53ee8cc1Swenshuai.xi #define SIOCAX25GETINFO (SIOCPROTOPRIVATE+13) 39*53ee8cc1Swenshuai.xi 40*53ee8cc1Swenshuai.xi #define AX25_SET_RT_IPMODE 2 41*53ee8cc1Swenshuai.xi 42*53ee8cc1Swenshuai.xi #define AX25_NOUID_DEFAULT 0 43*53ee8cc1Swenshuai.xi #define AX25_NOUID_BLOCK 1 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi typedef struct { 46*53ee8cc1Swenshuai.xi char ax25_call[7]; /* 6 call + SSID (shifted ascii!) */ 47*53ee8cc1Swenshuai.xi } ax25_address; 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi struct sockaddr_ax25 { 50*53ee8cc1Swenshuai.xi sa_family_t sax25_family; 51*53ee8cc1Swenshuai.xi ax25_address sax25_call; 52*53ee8cc1Swenshuai.xi int sax25_ndigis; 53*53ee8cc1Swenshuai.xi /* Digipeater ax25_address sets follow */ 54*53ee8cc1Swenshuai.xi }; 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi #define sax25_uid sax25_ndigis 57*53ee8cc1Swenshuai.xi 58*53ee8cc1Swenshuai.xi struct full_sockaddr_ax25 { 59*53ee8cc1Swenshuai.xi struct sockaddr_ax25 fsa_ax25; 60*53ee8cc1Swenshuai.xi ax25_address fsa_digipeater[AX25_MAX_DIGIS]; 61*53ee8cc1Swenshuai.xi }; 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xi struct ax25_routes_struct { 64*53ee8cc1Swenshuai.xi ax25_address port_addr; 65*53ee8cc1Swenshuai.xi ax25_address dest_addr; 66*53ee8cc1Swenshuai.xi unsigned char digi_count; 67*53ee8cc1Swenshuai.xi ax25_address digi_addr[AX25_MAX_DIGIS]; 68*53ee8cc1Swenshuai.xi }; 69*53ee8cc1Swenshuai.xi 70*53ee8cc1Swenshuai.xi struct ax25_route_opt_struct { 71*53ee8cc1Swenshuai.xi ax25_address port_addr; 72*53ee8cc1Swenshuai.xi ax25_address dest_addr; 73*53ee8cc1Swenshuai.xi int cmd; 74*53ee8cc1Swenshuai.xi int arg; 75*53ee8cc1Swenshuai.xi }; 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi struct ax25_ctl_struct { 78*53ee8cc1Swenshuai.xi ax25_address port_addr; 79*53ee8cc1Swenshuai.xi ax25_address source_addr; 80*53ee8cc1Swenshuai.xi ax25_address dest_addr; 81*53ee8cc1Swenshuai.xi unsigned int cmd; 82*53ee8cc1Swenshuai.xi unsigned long arg; 83*53ee8cc1Swenshuai.xi unsigned char digi_count; 84*53ee8cc1Swenshuai.xi ax25_address digi_addr[AX25_MAX_DIGIS]; 85*53ee8cc1Swenshuai.xi }; 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi /* this will go away. Please do not export to user land */ 88*53ee8cc1Swenshuai.xi struct ax25_info_struct_deprecated { 89*53ee8cc1Swenshuai.xi unsigned int n2, n2count; 90*53ee8cc1Swenshuai.xi unsigned int t1, t1timer; 91*53ee8cc1Swenshuai.xi unsigned int t2, t2timer; 92*53ee8cc1Swenshuai.xi unsigned int t3, t3timer; 93*53ee8cc1Swenshuai.xi unsigned int idle, idletimer; 94*53ee8cc1Swenshuai.xi unsigned int state; 95*53ee8cc1Swenshuai.xi unsigned int rcv_q, snd_q; 96*53ee8cc1Swenshuai.xi }; 97*53ee8cc1Swenshuai.xi 98*53ee8cc1Swenshuai.xi struct ax25_info_struct { 99*53ee8cc1Swenshuai.xi unsigned int n2, n2count; 100*53ee8cc1Swenshuai.xi unsigned int t1, t1timer; 101*53ee8cc1Swenshuai.xi unsigned int t2, t2timer; 102*53ee8cc1Swenshuai.xi unsigned int t3, t3timer; 103*53ee8cc1Swenshuai.xi unsigned int idle, idletimer; 104*53ee8cc1Swenshuai.xi unsigned int state; 105*53ee8cc1Swenshuai.xi unsigned int rcv_q, snd_q; 106*53ee8cc1Swenshuai.xi unsigned int vs, vr, va, vs_max; 107*53ee8cc1Swenshuai.xi unsigned int paclen; 108*53ee8cc1Swenshuai.xi unsigned int window; 109*53ee8cc1Swenshuai.xi }; 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi struct ax25_fwd_struct { 112*53ee8cc1Swenshuai.xi ax25_address port_from; 113*53ee8cc1Swenshuai.xi ax25_address port_to; 114*53ee8cc1Swenshuai.xi }; 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi #endif 117