summaryrefslogtreecommitdiffstats
path: root/sys/netgraph/atm/atmpif/ng_atmpif_var.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netgraph/atm/atmpif/ng_atmpif_var.h')
-rw-r--r--sys/netgraph/atm/atmpif/ng_atmpif_var.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/sys/netgraph/atm/atmpif/ng_atmpif_var.h b/sys/netgraph/atm/atmpif/ng_atmpif_var.h
new file mode 100644
index 0000000..f295461
--- /dev/null
+++ b/sys/netgraph/atm/atmpif/ng_atmpif_var.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2003 Harti Brandt.
+ * Copyright (c) 2003 Vincent Jardin.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Supported AALs
+ */
+enum vatmpif_aal {
+ VATMPIF_AAL_0 = 0, /* Cell Service */
+ VATMPIF_AAL_4 = 4, /* AAL 3/4 */
+ VATMPIF_AAL_5 = 5, /* AAL 5 */
+};
+typedef enum vatmpif_aal Vatmpif_aal;
+
+/*
+ * Supported traffic type
+ */
+enum vatmpif_traffic_type {
+ VATMPIF_TRAF_CBR = 0x01, /* Constant bit rate */
+ VATMPIF_TRAF_VBR = 0x02, /* Variable bit rate */
+ VATMPIF_TRAF_ABR = 0x03, /* Available Bit Rate */
+ VATMPIF_TRAF_UBR = 0x04, /* Unspecified bit rate */
+};
+typedef enum vatmpif_traffic_type Vatmpif_traffic_type;
+
+typedef struct t_atm_traffic Vatmpif_traffic;
+
+/*
+ * Host protocol control blocks
+ *
+ */
+/*
+ * Device VCC Entry
+ *
+ * Contains the common (vv_cmn) and specific information for each VCC
+ * which is opened through a ATM PIF node.
+ * It is a virtual VCC. From the Netgraph poit of view it is a
+ * per-node's hook private data.
+ *
+ * It is a polymorph object with the instances of Cmn_vcc.
+ */
+struct vatmpif_vcc {
+ Cmn_vcc vv_cmn; /* Common VCC stuff */
+ Vatmpif_aal vv_aal; /* AAL */
+ Vatmpif_traffic vv_traffic; /* forward and backward ATM traffic */
+ Vatmpif_traffic_type vv_traffic_type;/* CBR, VBR, UBR, ... */
+};
+typedef struct vatmpif_vcc Vatmpif_vcc;
+
+#define vv_next vv_cmn.cv_next
+#define vv_toku vv_cmn.cv_toku
+#define vv_upper vv_cmn.cv_upper
+#define vv_connvc vv_cmn.cv_connvc
+#define vv_state vv_cmn.cv_state
+
+/*
+ * The hook structure describes a virtual link
+ */
+struct ng_vatmpif_hook {
+ hook_p hook; /* netgraph hook */
+ Vatmpif_stats stats; /* link stats */
+ uint32_t InSeq; /* last received sequence number + 1 */
+ uint32_t OutSeq; /* last sent sequence number */
+ uint32_t cur_pcr; /* slot's reserved PCR */
+};
+
+/*
+ * Device Virtual Unit Structure
+ *
+ * Contains all the information for a single device (adapter).
+ * It is a virtual device. From the Netgraph point of view it is
+ * a per-node private data.
+ *
+ * It is a polymorph object with the instances of Cmn_unit.
+ */
+struct vatmpif_unit {
+ Cmn_unit vu_cmn; /* Common unit stuff */
+ node_p node; /* netgraph node */
+ struct ng_vatmpif_hook* link; /* virtual link hoook */
+ struct ng_vatmpif_config conf; /* node configuration */
+};
+typedef struct vatmpif_unit Vatmpif_unit;
+
+#define ng_vatmpif_private vatmpif_unit
+typedef struct ng_vatmpif_private *priv_p;
+
+#define vu_pif vu_cmn.cu_pif
+#define vu_unit vu_cmn.cu_unit
+#define vu_flags vu_cmn.cu_flags
+#define vu_mtu vu_cmn.cu_mtu
+#define vu_open_vcc vu_cmn.cu_open_vcc
+#define vu_vcc vu_cmn.cu_vcc
+#define vu_vcc_zone vu_cmn.cu_vcc_zone
+#define vu_nif_zone vu_cmn.cu_nif_zone
+#define vu_ioctl vu_cmn.cu_ioctl
+#define vu_instvcc vu_cmn.cu_instvcc
+#define vu_openvcc vu_cmn.cu_openvcc
+#define vu_closevcc vu_cmn.cu_closevcc
+#define vu_output vu_cmn.cu_output
+#define vu_config vu_cmn.cu_config
+#define vu_softc vu_cmn.cu_softc
+
+#define vu_stats link->stats
+#define vu_cur_pcr link->cur_pcr
+
+/*
+ * Netgraph to HARP API
+ */
+int vatmpif_harp_attach(node_p node);
+int vatmpif_harp_detach(node_p node);
+
+int vatmpif_harp_recv_drain(Vatmpif_unit *vup, KBuffer *m,
+ uint8_t vpi, uint16_t vci, uint8_t pt, uint8_t clp, Vatmpif_aal aal);
+
+/*
+ * HARP to Netgraph API
+ */
+int ng_atmpif_transmit(const priv_p priv, struct mbuf *m,
+ uint8_t vpi, uint16_t vci, uint8_t pt, uint8_t clp, Vatmpif_aal aal);
+
+extern uma_zone_t vatmpif_nif_zone;
+extern uma_zone_t vatmpif_vcc_zone;
OpenPOWER on IntegriCloud