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