1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
|
/*
*
* ===================================
* HARP | Host ATM Research Platform
* ===================================
*
*
* This Host ATM Research Platform ("HARP") file (the "Software") is
* made available by Network Computing Services, Inc. ("NetworkCS")
* "AS IS". NetworkCS does not provide maintenance, improvements or
* support of any kind.
*
* NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
* INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
* SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
* In no event shall NetworkCS be responsible for any damages, including
* but not limited to consequential damages, arising from or relating to
* any use of the Software or related support.
*
* Copyright 1994-1998 Network Computing Services, Inc.
*
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
* @(#) $FreeBSD$
*
*/
/*
* Core ATM Services
* -----------------
*
* PF_ATM socket ioctl definitions
*
*/
#ifndef _NETATM_ATM_IOCTL_H
#define _NETATM_ATM_IOCTL_H
/*
* Structure for PF_ATM configure (AIOCCFG) socket ioctls
*/
struct atmcfgreq {
int acr_opcode; /* Sub-operation */
union {
struct {
/* Configure - attach */
char acru_att_intf[IFNAMSIZ];/* Interface name */
u_char acru_att_proto; /* Signalling protocol */
} acru_att;
struct {
/* Configure - detach */
char acru_det_intf[IFNAMSIZ];/* Interface name */
} acru_det;
} acr_u;
};
#define acr_att_intf acr_u.acru_att.acru_att_intf
#define acr_att_proto acr_u.acru_att.acru_att_proto
#define acr_det_intf acr_u.acru_det.acru_det_intf
/*
* Structure for PF_ATM set (AIOCSET) socket ioctls
*/
struct atmsetreq {
int asr_opcode; /* Sub-operation */
union {
/* ARP server */
struct {
char asru_arp_intf[IFNAMSIZ];/* Interface name */
Atm_addr asru_arp_addr; /* ARP srvr address */
Atm_addr asru_arp_subaddr;/* ARP srvr subaddr */
caddr_t asru_arp_pbuf; /* Prefix buffer addr */
int asru_arp_plen; /* Prefix buffer len */
} asru_asrvr;
/* MAC address */
struct {
char asru_mac_intf[IFNAMSIZ];/* Interface name */
struct mac_addr asru_mac_addr; /* MAC address */
} asru_mac;
/* Network interface */
struct {
char asru_nif_intf[IFNAMSIZ];/* Interface name */
char asru_nif_pref[IFNAMSIZ];/* I/f prefix name */
int asru_nif_cnt; /* Number of i/fs */
} asru_nif;
/* NSAP prefix */
struct {
char asru_prf_intf[IFNAMSIZ];/* Interface name */
u_char asru_prf_pref[13]; /* NSAP prefix */
} asru_prf;
} asr_u;
};
#define asr_arp_intf asr_u.asru_asrvr.asru_arp_intf
#define asr_arp_addr asr_u.asru_asrvr.asru_arp_addr
#define asr_arp_pbuf asr_u.asru_asrvr.asru_arp_pbuf
#define asr_arp_plen asr_u.asru_asrvr.asru_arp_plen
#define asr_arp_subaddr asr_u.asru_asrvr.asru_arp_subaddr
#define asr_mac_intf asr_u.asru_mac.asru_mac_intf
#define asr_mac_addr asr_u.asru_mac.asru_mac_addr
#define asr_nif_intf asr_u.asru_nif.asru_nif_intf
#define asr_nif_pref asr_u.asru_nif.asru_nif_pref
#define asr_nif_cnt asr_u.asru_nif.asru_nif_cnt
#define asr_prf_intf asr_u.asru_prf.asru_prf_intf
#define asr_prf_pref asr_u.asru_prf.asru_prf_pref
/*
* Structure for PF_ATM add (AIOCADD) socket ioctls
*/
struct atmaddreq {
int aar_opcode; /* Sub-operation */
union {
/* Add PVC */
struct {
char aaru_pvc_intf[IFNAMSIZ];/* Interface name */
u_short aaru_pvc_vpi; /* VPI value */
u_short aaru_pvc_vci; /* VCI value */
struct sockaddr aaru_pvc_dst; /* Destination addr */
Sap_t aaru_pvc_sap; /* Endpoint SAP */
Aal_t aaru_pvc_aal; /* AAL */
Encaps_t aaru_pvc_encaps; /* Encapsulation */
u_char aaru_pvc_flags; /* Flags (see below) */
} aaru_add_pvc;
/* Add ARP table entry */
struct {
char aaru_arp_intf[IFNAMSIZ];/* Interface name */
struct sockaddr aaru_arp_dst; /* IP addr */
Atm_addr aaru_arp_addr; /* ATM addr */
u_char aaru_arp_origin; /* Entry origin */
} aaru_add_arp;
} aar_u;
};
#define aar_pvc_intf aar_u.aaru_add_pvc.aaru_pvc_intf
#define aar_pvc_vpi aar_u.aaru_add_pvc.aaru_pvc_vpi
#define aar_pvc_vci aar_u.aaru_add_pvc.aaru_pvc_vci
#define aar_pvc_dst aar_u.aaru_add_pvc.aaru_pvc_dst
#define aar_pvc_sap aar_u.aaru_add_pvc.aaru_pvc_sap
#define aar_pvc_aal aar_u.aaru_add_pvc.aaru_pvc_aal
#define aar_pvc_encaps aar_u.aaru_add_pvc.aaru_pvc_encaps
#define aar_pvc_flags aar_u.aaru_add_pvc.aaru_pvc_flags
#define aar_arp_intf aar_u.aaru_add_arp.aaru_arp_intf
#define aar_arp_dst aar_u.aaru_add_arp.aaru_arp_dst
#define aar_arp_addr aar_u.aaru_add_arp.aaru_arp_addr
#define aar_arp_origin aar_u.aaru_add_arp.aaru_arp_origin
/* PVC flags */
#define PVC_DYN 0x01 /* Dest addr is dynamic */
/*
* Structure for PF_ATM delete (AIOCDEL) socket ioctls
*/
struct atmdelreq {
int adr_opcode; /* Sub-operation */
union {
/* Delete PVC */
struct {
char adru_pvc_intf[IFNAMSIZ];/* Interface name */
u_short adru_pvc_vpi; /* VPI value */
u_short adru_pvc_vci; /* VCI value */
} adru_del_pvc;
/* Delete SVC */
struct {
char adru_svc_intf[IFNAMSIZ];/* Interface name */
u_short adru_svc_vpi; /* VPI value */
u_short adru_svc_vci; /* VCI value */
} adru_del_svc;
/* Delete ARP table entry */
struct {
char adru_arp_intf[IFNAMSIZ];/* Interface name */
struct sockaddr adru_arp_dst; /* IP addr */
} adru_del_arp;
} adr_u;
};
#define adr_pvc_intf adr_u.adru_del_pvc.adru_pvc_intf
#define adr_pvc_vpi adr_u.adru_del_pvc.adru_pvc_vpi
#define adr_pvc_vci adr_u.adru_del_pvc.adru_pvc_vci
#define adr_svc_intf adr_u.adru_del_svc.adru_svc_intf
#define adr_svc_vpi adr_u.adru_del_svc.adru_svc_vpi
#define adr_svc_vci adr_u.adru_del_svc.adru_svc_vci
#define adr_arp_intf adr_u.adru_del_arp.adru_arp_intf
#define adr_arp_dst adr_u.adru_del_arp.adru_arp_dst
/*
* Structure for PF_ATM information (AIOCINFO) socket ioctls
*/
struct atminfreq {
int air_opcode; /* Sub-operation */
caddr_t air_buf_addr; /* Buffer for returned info */
int air_buf_len; /* Buffer length */
union {
/* Vendor info */
char airu_vinfo_intf[IFNAMSIZ];/* Interface name */
/* IP VCC */
struct sockaddr airu_ip_addr; /* Destination host */
/* ARP table */
struct {
struct sockaddr airu_arp_addr; /* Destination host */
u_char airu_arp_flags; /* Flags (see below) */
} airu_arp;
/* ARP server */
char airu_asrv_intf[IFNAMSIZ];/* Interface name */
/* Interface */
char airu_int_intf[IFNAMSIZ];/* Interface name */
/* VCC */
char airu_vcc_intf[IFNAMSIZ];/* Interface name */
/* Configuration */
char airu_cfg_intf[IFNAMSIZ];/* Interface name */
/* Network interface */
char airu_netif_intf[IFNAMSIZ];/* Interface name */
/* Physical interface statistics */
char airu_physt_intf[IFNAMSIZ];/* Interface name */
} air_u;
};
#define air_vinfo_intf air_u.airu_vinfo_intf
#define air_ip_addr air_u.airu_ip_addr
#define air_arp_addr air_u.airu_arp.airu_arp_addr
#define air_arp_flags air_u.airu_arp.airu_arp_flags
#define air_asrv_intf air_u.airu_asrv_intf
#define air_int_intf air_u.airu_int_intf
#define air_vcc_intf air_u.airu_vcc_intf
#define air_cfg_intf air_u.airu_cfg_intf
#define air_netif_intf air_u.airu_netif_intf
#define air_physt_intf air_u.airu_physt_intf
/* ARP table info flags */
#define ARP_RESET_REF 0x01 /* Reset refresh status */
/*
* Structures returned by information requests
*/
/*
* Vendor-specific interface information
*/
struct air_vinfo_rsp {
char avsp_intf[IFNAMSIZ]; /* Interface name */
int avsp_len; /* Length of returned
Vendor Info block */
/* Vendor info ... */
};
/*
* ARP table information
*/
struct air_arp_rsp {
struct sockaddr aap_arp_addr; /* Destination host */
char aap_intf[IFNAMSIZ]; /* Interface name */
u_char aap_flags; /* Flags (see below) */
u_char aap_origin; /* Entry origin (see below) */
u_char aap_age; /* Aging timeout (minutes) */
Atm_addr aap_addr; /* ATM address */
Atm_addr aap_subaddr; /* ATM subaddress */
};
/*
* ARP entry flags
*/
#define ARPF_VALID 0x01 /* Entry is valid */
#define ARPF_REFRESH 0x02 /* Entry has been refreshed */
/*
* ARP entry origin
*/
#define ARP_ORIG_PERM 50 /* Permanent entry */
/*
* IP VCC information
*/
struct air_ip_vcc_rsp {
struct sockaddr aip_dst_addr; /* Destination host */
char aip_intf[IFNAMSIZ]; /* Interface name */
u_short aip_vpi; /* VPI value */
u_short aip_vci; /* VCI value */
u_char aip_sig_proto; /* Signalling protocol */
u_char aip_flags; /* Flags (IVF_*) */
u_char aip_state; /* IP VCC state */
};
/*
* ARP server information
*/
struct air_asrv_rsp {
char asp_intf[IFNAMSIZ]; /* Interface name */
Atm_addr asp_addr; /* Server ATM address */
Atm_addr asp_subaddr; /* Server ATM subaddress */
int asp_state; /* Server state */
int asp_nprefix; /* Number of prefix entries */
};
/*
* Interface information
*/
struct air_int_rsp {
char anp_intf[IFNAMSIZ]; /* Interface name */
Atm_addr anp_addr; /* ATM address */
Atm_addr anp_subaddr; /* ATM subaddress */
u_char anp_sig_proto; /* Signalling protocol */
u_char anp_sig_state; /* Signalling protocol state */
char anp_nif_pref[IFNAMSIZ]; /* Netif prefix */
int anp_nif_cnt; /* No. of netifs */
};
/*
* Network interface information
*/
struct air_netif_rsp {
char anp_intf[IFNAMSIZ]; /* Interface name */
struct sockaddr anp_proto_addr; /* Protocol address */
char anp_phy_intf[IFNAMSIZ]; /* Interface name */
};
/*
* VCC information
*/
#define O_CNT 8
struct air_vcc_rsp {
char avp_intf[IFNAMSIZ]; /* Interface name */
u_short avp_vpi; /* VPI value */
u_short avp_vci; /* VCI value */
u_char avp_type; /* Type (SVC or PVC) */
u_char avp_aal; /* AAL */
u_char avp_sig_proto; /* Signalling protocol */
Encaps_t avp_encaps; /* Encapsulation */
u_char avp_state; /* State (sig mgr specific) */
char avp_owners[(T_ATM_APP_NAME_LEN+1)*O_CNT];/* VCC users */
Atm_addr avp_daddr; /* Address of far end */
Atm_addr avp_dsubaddr; /* Subaddress of far end */
long avp_ipdus; /* PDUs received from VCC */
long avp_opdus; /* PDUs sent to VCC */
long avp_ibytes; /* Bytes received from VCC */
long avp_obytes; /* Bytes sent to VCC */
long avp_ierrors; /* Errors receiving from VCC */
long avp_oerrors; /* Errors sending to VCC */
time_t avp_tstamp; /* State transition timestamp */
};
/*
* Adapter configuration information
*/
struct air_cfg_rsp {
char acp_intf[IFNAMSIZ]; /* Interface name */
Atm_config acp_cfg; /* Config info */
};
#define acp_vendor acp_cfg.ac_vendor
#define acp_vendapi acp_cfg.ac_vendapi
#define acp_device acp_cfg.ac_device
#define acp_media acp_cfg.ac_media
#define acp_serial acp_cfg.ac_serial
#define acp_bustype acp_cfg.ac_bustype
#define acp_busslot acp_cfg.ac_busslot
#define acp_ram acp_cfg.ac_ram
#define acp_ramsize acp_cfg.ac_ramsize
#define acp_macaddr acp_cfg.ac_macaddr
#define acp_hard_vers acp_cfg.ac_hard_vers
#define acp_firm_vers acp_cfg.ac_firm_vers
/*
* Version information
*/
struct air_version_rsp {
int avp_version; /* Software version */
};
/*
* Physical interface statistics
*/
struct air_phy_stat_rsp {
char app_intf[IFNAMSIZ]; /* Interface name */
u_quad_t app_ipdus; /* PDUs received from I/F */
u_quad_t app_opdus; /* PDUs sent to I/F */
u_quad_t app_ibytes; /* Bytes received from I/F */
u_quad_t app_obytes; /* Bytes sent to I/F */
u_quad_t app_ierrors; /* Errors receiving from I/F */
u_quad_t app_oerrors; /* Errors sending to I/F */
u_quad_t app_cmderrors; /* I/F command errors */
};
/*
* PF_ATM sub-operation codes
*/
#define AIOCS_CFG_ATT 1
#define AIOCS_CFG_DET 2
#define AIOCS_ADD_PVC 32
#define AIOCS_ADD_ARP 33
#define AIOCS_DEL_PVC 64
#define AIOCS_DEL_SVC 65
#define AIOCS_DEL_ARP 66
#define AIOCS_SET_ASV 96
#define AIOCS_SET_NIF 97
#define AIOCS_SET_PRF 98
#define AIOCS_SET_MAC 99
#define AIOCS_INF_VST 160
#define AIOCS_INF_IPM 161
#define AIOCS_INF_ARP 162
#define AIOCS_INF_ASV 163
#define AIOCS_INF_INT 164
#define AIOCS_INF_VCC 165
#define AIOCS_INF_CFG 166
#define AIOCS_INF_NIF 167
#define AIOCS_INF_PIS 168
#define AIOCS_INF_VER 169
/*
* PF_ATM ioctls
*/
#if !defined(__GNUC__)
#define AIOCCFG _IOW(A, 128, struct atmcfgreq) /* Configure i/f */
#define AIOCADD _IOW(A, 129, struct atmaddreq) /* Add (e.g. PVC) */
#define AIOCDEL _IOW(A, 130, struct atmdelreq) /* Delete */
#define AIOCSET _IOW(A, 132, struct atmsetreq) /* Set (e.g. net i/f) */
#define AIOCINFO _IOWR(A, 133, struct atminfreq) /* Show kernel info */
#else
#define AIOCCFG _IOW('A', 128, struct atmcfgreq)/* Configure i/f */
#define AIOCADD _IOW('A', 129, struct atmaddreq)/* Add (e.g. PVC) */
#define AIOCDEL _IOW('A', 130, struct atmdelreq)/* Delete */
#define AIOCSET _IOW('A', 132, struct atmsetreq)/* Set (e.g. net i/f) */
#define AIOCINFO _IOWR('A', 133, struct atminfreq)/* Show kernel info */
#endif
#endif /* _NETATM_ATM_IOCTL_H */
|