aboutsummaryrefslogtreecommitdiff
path: root/sys/netatm/atm_ioctl.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netatm/atm_ioctl.h')
-rw-r--r--sys/netatm/atm_ioctl.h432
1 files changed, 432 insertions, 0 deletions
diff --git a/sys/netatm/atm_ioctl.h b/sys/netatm/atm_ioctl.h
new file mode 100644
index 000000000000..a38d1839afce
--- /dev/null
+++ b/sys/netatm/atm_ioctl.h
@@ -0,0 +1,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.
+ *
+ * @(#) $Id: atm_ioctl.h,v 1.9 1998/08/26 23:29:01 mks Exp $
+ *
+ */
+
+/*
+ * 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 */
+ u_char 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 */
+ long app_ipdus; /* PDUs received from I/F */
+ long app_opdus; /* PDUs sent to I/F */
+ long app_ibytes; /* Bytes received from I/F */
+ long app_obytes; /* Bytes sent to I/F */
+ long app_ierrors; /* Errors receiving from I/F */
+ long app_oerrors; /* Errors sending to I/F */
+ long 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(sun) && !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 */