1#ifndef LLC_CONN_H
2#define LLC_CONN_H
3
4
5
6
7
8
9
10
11
12
13
14#include <linux/timer.h>
15#include <net/llc_if.h>
16#include <linux/llc.h>
17
18#define LLC_EVENT 1
19#define LLC_PACKET 2
20
21#define LLC_P_TIME 2
22#define LLC_ACK_TIME 1
23#define LLC_REJ_TIME 3
24#define LLC_BUSY_TIME 3
25
26struct llc_timer {
27 struct timer_list timer;
28 u16 expire;
29};
30
31struct llc_opt {
32 struct sock *sk;
33 struct sockaddr_llc addr;
34 u8 state;
35 struct llc_sap *sap;
36 struct llc_addr laddr;
37 struct llc_addr daddr;
38 struct net_device *dev;
39 u8 retry_count;
40 u8 ack_must_be_send;
41 u8 first_pdu_Ns;
42 u8 npta;
43 struct llc_timer ack_timer;
44 struct llc_timer pf_cycle_timer;
45 struct llc_timer rej_sent_timer;
46 struct llc_timer busy_state_timer;
47 u8 vS;
48 u8 vR;
49 u32 n2;
50 u32 n1;
51 u8 k;
52 u8 rw;
53 u8 p_flag;
54 u8 f_flag;
55 u8 s_flag;
56 u8 data_flag;
57 u8 remote_busy_flag;
58 u8 cause_flag;
59 struct sk_buff_head pdu_unack_q;
60 u16 link;
61 u8 X;
62 u8 ack_pf;
63
64 u8 failed_data_req;
65
66
67
68 u8 dec_step;
69 u8 inc_cntr;
70 u8 dec_cntr;
71 u8 connect_step;
72 u8 last_nr;
73 u32 rx_pdu_hdr;
74
75
76};
77
78#define llc_sk(__sk) ((struct llc_opt *)(__sk)->sk_protinfo)
79
80static __inline__ void llc_set_backlog_type(struct sk_buff *skb, char type)
81{
82 skb->cb[sizeof(skb->cb) - 1] = type;
83}
84
85static __inline__ char llc_backlog_type(struct sk_buff *skb)
86{
87 return skb->cb[sizeof(skb->cb) - 1];
88}
89
90extern struct sock *llc_sk_alloc(int family, int priority);
91extern void llc_sk_free(struct sock *sk);
92
93extern void llc_sk_reset(struct sock *sk);
94
95
96extern int llc_conn_state_process(struct sock *sk, struct sk_buff *skb);
97extern void llc_conn_send_pdu(struct sock *sk, struct sk_buff *skb);
98extern void llc_conn_rtn_pdu(struct sock *sk, struct sk_buff *skb);
99extern void llc_conn_resend_i_pdu_as_cmd(struct sock *sk, u8 nr,
100 u8 first_p_bit);
101extern void llc_conn_resend_i_pdu_as_rsp(struct sock *sk, u8 nr,
102 u8 first_f_bit);
103extern int llc_conn_remove_acked_pdus(struct sock *conn, u8 nr,
104 u16 *how_many_unacked);
105extern struct sock *llc_lookup_established(struct llc_sap *sap,
106 struct llc_addr *daddr,
107 struct llc_addr *laddr);
108extern void llc_sap_add_socket(struct llc_sap *sap, struct sock *sk);
109extern void llc_sap_remove_socket(struct llc_sap *sap, struct sock *sk);
110
111extern u8 llc_data_accept_state(u8 state);
112extern void llc_build_offset_table(void);
113extern int llc_release_sockets(struct llc_sap *sap);
114#endif
115