1 /*****************************************************************************
2 * if_wanpipe.h	Header file for the Sangoma AF_WANPIPE Socket
3 *
4 * Author: 	Nenad Corbic
5 *
6 * Copyright:	(c) 2000 Sangoma Technologies Inc.
7 *
8 *		This program is free software; you can redistribute it and/or
9 *		modify it under the terms of the GNU General Public License
10 *		as published by the Free Software Foundation; either version
11 *		2 of the License, or (at your option) any later version.
12 * ============================================================================
13 *
14 * Jan 28, 2000	Nenad Corbic 	Initial Version
15 *
16 *****************************************************************************/
17 
18 #ifndef __LINUX_IF_WAN_PACKET_H
19 #define __LINUX_IF_WAN_PACKET_H
20 
21 struct wan_sockaddr_ll
22 {
23 	unsigned short	sll_family;
24 	unsigned short	sll_protocol;
25 	int		sll_ifindex;
26 	unsigned short	sll_hatype;
27 	unsigned char	sll_pkttype;
28 	unsigned char	sll_halen;
29 	unsigned char	sll_addr[8];
30 	unsigned char   sll_device[14];
31 	unsigned char 	sll_card[14];
32 };
33 
34 typedef struct
35 {
36 	unsigned char free;
37 	unsigned char sk_state;
38 	int rcvbuf;
39 	int sndbuf;
40 	int rmem;
41 	int wmem;
42 	int sk_count;
43 	unsigned char bound;
44 	char name[14];
45 	unsigned char d_state;
46 	unsigned char svc;
47 	unsigned short lcn;
48 	unsigned char mbox;
49 	unsigned char cmd_busy;
50 	unsigned char command;
51 	unsigned poll;
52 	unsigned poll_cnt;
53 	int rblock;
54 } wan_debug_hdr_t;
55 
56 #define MAX_NUM_DEBUG  10
57 #define X25_PROT       0x16
58 #define PVC_PROT       0x17
59 
60 typedef struct
61 {
62 	wan_debug_hdr_t debug[MAX_NUM_DEBUG];
63 }wan_debug_t;
64 
65 #define	SIOC_WANPIPE_GET_CALL_DATA	(SIOCPROTOPRIVATE + 0)
66 #define	SIOC_WANPIPE_SET_CALL_DATA	(SIOCPROTOPRIVATE + 1)
67 #define SIOC_WANPIPE_ACCEPT_CALL	(SIOCPROTOPRIVATE + 2)
68 #define SIOC_WANPIPE_CLEAR_CALL	        (SIOCPROTOPRIVATE + 3)
69 #define SIOC_WANPIPE_RESET_CALL	        (SIOCPROTOPRIVATE + 4)
70 #define SIOC_WANPIPE_DEBUG	        (SIOCPROTOPRIVATE + 5)
71 #define SIOC_WANPIPE_SET_NONBLOCK	(SIOCPROTOPRIVATE + 6)
72 #define SIOC_WANPIPE_CHECK_TX		(SIOCPROTOPRIVATE + 7)
73 #define SIOC_WANPIPE_SOCK_STATE		(SIOCPROTOPRIVATE + 8)
74 
75 /* Packet types */
76 
77 #define WAN_PACKET_HOST		0		/* To us		*/
78 #define WAN_PACKET_BROADCAST	1		/* To all		*/
79 #define WAN_PACKET_MULTICAST	2		/* To group		*/
80 #define WAN_PACKET_OTHERHOST	3		/* To someone else 	*/
81 #define WAN_PACKET_OUTGOING		4		/* Outgoing of any type */
82 /* These ones are invisible by user level */
83 #define WAN_PACKET_LOOPBACK		5		/* MC/BRD frame looped back */
84 #define WAN_PACKET_FASTROUTE	6		/* Fastrouted frame	*/
85 
86 
87 /* X25 specific */
88 #define WAN_PACKET_DATA 	7
89 #define WAN_PACKET_CMD 		8
90 #define WAN_PACKET_ASYNC	9
91 #define WAN_PACKET_ERR	       10
92 
93 /* Packet socket options */
94 
95 #define WAN_PACKET_ADD_MEMBERSHIP		1
96 #define WAN_PACKET_DROP_MEMBERSHIP		2
97 
98 #define WAN_PACKET_MR_MULTICAST	0
99 #define WAN_PACKET_MR_PROMISC	1
100 #define WAN_PACKET_MR_ALLMULTI	2
101 
102 #ifdef __KERNEL__
103 #ifndef netdevice_t
104 #include <linux/version.h>
105 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0)
106  #define netdevice_t struct net_device
107 #else
108  #define netdevice_t struct device
109 #endif
110 #endif
111 
112 /* Private wanpipe socket structures. */
113 struct wanpipe_opt
114 {
115 	void   *mbox;		/* Mail box  */
116 	void   *card; 		/* Card bouded to */
117 	netdevice_t *dev;	/* Bounded device */
118 	unsigned short lcn;	/* Binded LCN */
119 	unsigned char  svc;	/* 0=pvc, 1=svc */
120 	unsigned char  timer;   /* flag for delayed transmit*/
121 	struct timer_list tx_timer;
122 	unsigned poll_cnt;
123 	unsigned char force;	/* Used to force sock release */
124 	atomic_t packet_sent;
125 };
126 #endif
127 
128 #endif
129