Commit | Line | Data |
---|---|---|
cf17d1f5 KS |
1 | /* |
2 | * Copyright (c) 1989 Regents of the University of California. | |
3 | * All rights reserved. | |
4 | * | |
5 | * Redistribution and use in source and binary forms are permitted | |
6 | * provided that the above copyright notice and this paragraph are | |
7 | * duplicated in all such forms and that any documentation, | |
8 | * advertising materials, and other materials related to such | |
9 | * distribution and use acknowledge that the software was developed | |
10 | * by the University of California, Berkeley. The name of the | |
11 | * University may not be used to endorse or promote products derived | |
12 | * from this software without specific prior written permission. | |
13 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | |
14 | * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
15 | * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
16 | * | |
17 | * @(#)x25_var.h 7.1 (Berkeley) %G% | |
18 | */ | |
19 | ||
20 | ||
21 | /* | |
22 | * Device-independent x25 driver data. | |
23 | */ | |
24 | struct x25com { | |
25 | struct ifnet xc_if; /* network-visible interface */ | |
26 | /* int (*xc_if.if_start)() /* connect, confirm procedure */ | |
27 | u_char xc_addrlen; /* length of X.121 address */ | |
28 | u_char xc_addr[16]; /* X.121 address */ | |
29 | u_short xc_flags; /* X.25 specific flags */ | |
30 | u_short xc_nchan; /* number of logical channels */ | |
31 | u_short xc_nactive; /* number of live logical channels */ | |
32 | u_short xc_npvc; /* # of permanent virt. circuits */ | |
33 | u_short xc_pvcx; /* index of first pcv */ | |
34 | u_short xc_svcx; /* index of first svc */ | |
35 | u_short xc_dg_idletimo; /* timeout to close idle dg channel */ | |
36 | u_short xc_rslvtimo; /* if name translation fails, rid */ | |
37 | struct x25lcb **xc_lcbvec; /* where to dispatch data */ | |
38 | int (*xc_disconnect)(); /* to delete idle dg circuits */ | |
39 | }; | |
40 | #define XCF_HSL3 0x1 /* Hardware support for level 3 */ | |
41 | #define XCF_HSL2 0x2 /* Hardware support for level 2 */ | |
42 | ||
43 | ||
44 | /* | |
45 | * Local Connection Block. | |
46 | */ | |
47 | ||
48 | struct x25lcb { | |
49 | struct xq { | |
50 | int (*xq_put)(); /* How to process data */ | |
51 | struct mbuf *xq_data; /* Queued data */ | |
52 | int xq_space; /* For accounting */ | |
53 | int xq_flags; | |
54 | int (*xq_unblock)();/* called & cleared when unblocking */ | |
55 | caddr_t xq_proto; /* for other service entries */ | |
56 | caddr_t xq_next; /* next q, or route, or pcb */ | |
57 | } xl_downq, xl_upq; | |
58 | /* (*xl_downq.xq_next->xq_put)() /* LAPB put when using pk_output() */ | |
59 | int xl_flags; /* valid, c-o versus dg */ | |
60 | int xl_timer; /* figure out what to close */ | |
61 | int xl_state; /* connecting, connected, resolving */ | |
62 | int xl_index; /* which entry we are in device table */ | |
63 | struct x25com *xl_xc; /* back pointer to device */ | |
64 | /* | |
65 | * x25pkb (packet-level control block) would follow immediately | |
66 | * for devices only supplying LAPB or less. | |
67 | */ | |
68 | }; | |
69 | /* flags */ | |
70 | #define XL_VALID 0x1 /* Circuit is live, etc. */ | |
71 | #define XL_DGRAM 0x2 /* not connection oriented, can close */ | |
72 | #define XL_RTHELD 0x4 /* this lcb references rtentry */ | |
73 | ||
74 | #define XQ_UP 0x1 /* I am an up queue */ | |
75 | #define XQ_DOWN 0x2 /* I am a down queue */ | |
76 | ||
77 | /* states for LCB */ | |
78 | #define XLS_NEWBORN 0x0 | |
79 | #define XLS_CONNECTED 0x1 | |
80 | #define XLS_CONNECTING 0x2 | |
81 | #define XLS_RESOLVING 0x3 | |
82 | #define XLS_DISCONNECTING 0x4 | |
83 | #define XLS_FREE 0x5 | |
84 | ||
85 | #ifdef KERNEL | |
86 | int x25_ifinput(); | |
87 | #endif |