Lines Matching +full:0 +full:x25
26 #define pr_fmt(fmt) "X25: " fmt
34 #include <net/x25.h>
41 struct x25_sock *x25 = x25_sk(sk); in x25_clear_queues() local
44 skb_queue_purge(&x25->ack_queue); in x25_clear_queues()
45 skb_queue_purge(&x25->interrupt_in_queue); in x25_clear_queues()
46 skb_queue_purge(&x25->interrupt_out_queue); in x25_clear_queues()
47 skb_queue_purge(&x25->fragment_queue); in x25_clear_queues()
59 struct x25_sock *x25 = x25_sk(sk); in x25_frames_acked() local
60 int modulus = x25->neighbour->extended ? X25_EMODULUS : X25_SMODULUS; in x25_frames_acked()
65 if (x25->va != nr) in x25_frames_acked()
66 while (skb_peek(&x25->ack_queue) && x25->va != nr) { in x25_frames_acked()
67 skb = skb_dequeue(&x25->ack_queue); in x25_frames_acked()
69 x25->va = (x25->va + 1) % modulus; in x25_frames_acked()
97 struct x25_sock *x25 = x25_sk(sk); in x25_validate_nr() local
98 unsigned short vc = x25->va; in x25_validate_nr()
99 int modulus = x25->neighbour->extended ? X25_EMODULUS : X25_SMODULUS; in x25_validate_nr()
101 while (vc != x25->vs) { in x25_validate_nr()
107 return nr == x25->vs ? 1 : 0; in x25_validate_nr()
116 struct x25_sock *x25 = x25_sk(sk); in x25_write_internal() local
135 if (x25->facilities.reverse & 0x80) { in x25_write_internal()
170 lci1 = (x25->lci >> 8) & 0x0F; in x25_write_internal()
171 lci2 = (x25->lci >> 0) & 0xFF; in x25_write_internal()
173 if (x25->neighbour->extended) { in x25_write_internal()
189 len = x25_addr_aton(addresses, &x25->dest_addr, in x25_write_internal()
190 &x25->source_addr); in x25_write_internal()
193 &x25->facilities, in x25_write_internal()
194 &x25->dte_facilities, in x25_write_internal()
195 x25->neighbour->global_facil_mask); in x25_write_internal()
197 skb_put_data(skb, x25->calluserdata.cuddata, in x25_write_internal()
198 x25->calluserdata.cudlength); in x25_write_internal()
199 x25->calluserdata.cudlength = 0; in x25_write_internal()
205 *dptr++ = 0x00; /* Address lengths */ in x25_write_internal()
207 &x25->facilities, in x25_write_internal()
208 &x25->dte_facilities, in x25_write_internal()
209 x25->vc_facil_mask); in x25_write_internal()
215 if(x25->facilities.reverse & 0x80) { in x25_write_internal()
217 x25->calluserdata.cuddata, in x25_write_internal()
218 x25->calluserdata.cudlength); in x25_write_internal()
220 x25->calluserdata.cudlength = 0; in x25_write_internal()
226 *dptr++ = x25->causediag.cause; in x25_write_internal()
227 *dptr++ = x25->causediag.diagnostic; in x25_write_internal()
233 *dptr++ = 0x00; /* XXX */ in x25_write_internal()
234 *dptr++ = 0x00; /* XXX */ in x25_write_internal()
240 if (x25->neighbour->extended) { in x25_write_internal()
243 *dptr++ = (x25->vr << 1) & 0xFE; in x25_write_internal()
247 *dptr++ |= (x25->vr << 5) & 0xE0; in x25_write_internal()
259 x25_transmit_link(skb, x25->neighbour); in x25_write_internal()
268 struct x25_sock *x25 = x25_sk(sk); in x25_decode() local
275 *ns = *nr = *q = *d = *m = 0; in x25_decode()
294 if (x25->neighbour->extended) { in x25_decode()
302 *nr = (frame[3] >> 1) & 0x7F; in x25_decode()
306 if ((frame[2] & 0x1F) == X25_RR || in x25_decode()
307 (frame[2] & 0x1F) == X25_RNR || in x25_decode()
308 (frame[2] & 0x1F) == X25_REJ) { in x25_decode()
309 *nr = (frame[2] >> 5) & 0x07; in x25_decode()
310 return frame[2] & 0x1F; in x25_decode()
314 if (x25->neighbour->extended) { in x25_decode()
315 if ((frame[2] & 0x01) == X25_DATA) { in x25_decode()
320 *q = (frame[0] & X25_Q_BIT) == X25_Q_BIT; in x25_decode()
321 *d = (frame[0] & X25_D_BIT) == X25_D_BIT; in x25_decode()
323 *nr = (frame[3] >> 1) & 0x7F; in x25_decode()
324 *ns = (frame[2] >> 1) & 0x7F; in x25_decode()
328 if ((frame[2] & 0x01) == X25_DATA) { in x25_decode()
329 *q = (frame[0] & X25_Q_BIT) == X25_Q_BIT; in x25_decode()
330 *d = (frame[0] & X25_D_BIT) == X25_D_BIT; in x25_decode()
332 *nr = (frame[2] >> 5) & 0x07; in x25_decode()
333 *ns = (frame[2] >> 1) & 0x07; in x25_decode()
346 struct x25_sock *x25 = x25_sk(sk); in x25_disconnect() local
351 x25->lci = 0; in x25_disconnect()
352 x25->state = X25_STATE_0; in x25_disconnect()
354 x25->causediag.cause = cause; in x25_disconnect()
355 x25->causediag.diagnostic = diagnostic; in x25_disconnect()
365 if (x25->neighbour) { in x25_disconnect()
367 x25_neigh_put(x25->neighbour); in x25_disconnect()
368 x25->neighbour = NULL; in x25_disconnect()
379 struct x25_sock *x25 = x25_sk(sk); in x25_check_rbuf() local
382 (x25->condition & X25_COND_OWN_RX_BUSY)) { in x25_check_rbuf()
383 x25->condition &= ~X25_COND_OWN_RX_BUSY; in x25_check_rbuf()
384 x25->condition &= ~X25_COND_ACK_PENDING; in x25_check_rbuf()
385 x25->vl = x25->vr; in x25_check_rbuf()