summaryrefslogtreecommitdiffstats
path: root/sys/net/if_atm.h
diff options
context:
space:
mode:
authorkjc <kjc@FreeBSD.org>1998-07-29 05:35:16 +0000
committerkjc <kjc@FreeBSD.org>1998-07-29 05:35:16 +0000
commitbd9e5f5f5b5ac9cb1bcfd4be4ac99ce4fd518e15 (patch)
tree62f7c8492d4fd7faf52a9a0f3a13e97ae83bed96 /sys/net/if_atm.h
parent50f3429a4832d3eeb70ad7d19a88c51c7021c04c (diff)
downloadFreeBSD-src-bd9e5f5f5b5ac9cb1bcfd4be4ac99ce4fd518e15.zip
FreeBSD-src-bd9e5f5f5b5ac9cb1bcfd4be4ac99ce4fd518e15.tar.gz
update ATM driver. (base version: midway.c 1.67 --> 1.68)
several new features are added: - support vc/vp shaping - support pvc shadow interface code cleanup: - remove WMAYBE related code. ENI WMAYBE DMA doen't work. - remove updating if_lastchange for every packet. - BPF related code is moved to midway.c as it should be. (bpfwrite should work if atm_pseudohdr and LLC/SNAP are prepended.) - BPF link type is changed to DLT_ATM_RFC1483. BPF now understands only LLC/SNAP!! (because bpf can't handle variable link header length.) It is recommended to use LLC/SNAP instead of NULL encapsulation for various reasons. (BPF, IPv6, interoperability, etc.) the code has been used for months in ALTQ and KAME IPv6. OKed by phk long time ago.
Diffstat (limited to 'sys/net/if_atm.h')
-rw-r--r--sys/net/if_atm.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/sys/net/if_atm.h b/sys/net/if_atm.h
index 1d7cd8e..f1e2d8b 100644
--- a/sys/net/if_atm.h
+++ b/sys/net/if_atm.h
@@ -42,6 +42,14 @@
#endif
#endif /* freebsd doesn't define _KERNEL */
+#ifndef NO_ATM_PVCEXT
+/*
+ * ATM_PVCEXT enables PVC extention: VP/VC shaping
+ * and PVC shadow interfaces.
+ */
+#define ATM_PVCEXT /* enable pvc extention */
+#endif
+
#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__)
#define RTALLOC1(A,B) rtalloc1((A),(B))
#elif defined(__FreeBSD__)
@@ -51,7 +59,6 @@
/*
* pseudo header for packet transmission
*/
-
struct atm_pseudohdr {
u_int8_t atm_ph[4]; /* flags+VPI+VCI1(msb)+VCI2(lsb) */
};
@@ -67,6 +74,9 @@ struct atm_pseudohdr {
#define ATM_PH_AAL5 0x01 /* use AAL5? (0 == aal0) */
#define ATM_PH_LLCSNAP 0x02 /* use the LLC SNAP encoding (iff aal5) */
+#ifdef ATM_PVCEXT
+#define ATM_PH_INERNAL 0x20 /* reserve for kernel internal use */
+#endif
#define ATM_PH_DRIVER7 0x40 /* reserve for driver's use */
#define ATM_PH_DRIVER8 0x80 /* reserve for driver's use */
@@ -85,6 +95,29 @@ struct atm_pseudoioctl {
#define SIOCATMENA _IOWR('a', 123, struct atm_pseudoioctl) /* enable */
#define SIOCATMDIS _IOWR('a', 124, struct atm_pseudoioctl) /* disable */
+#ifdef ATM_PVCEXT
+
+/* structure to control PVC transmitter */
+struct pvctxreq {
+ /* first entry must be compatible with struct ifreq */
+ char pvc_ifname[IFNAMSIZ]; /* if name, e.g. "en0" */
+ struct atm_pseudohdr pvc_aph; /* (flags) + vpi:vci */
+ struct atm_pseudohdr pvc_joint; /* for vp shaping: another vc
+ to share the shaper */
+ int pvc_pcr; /* peak cell rate (shaper value) */
+};
+
+/* use ifioctl for now */
+#define SIOCSPVCTX _IOWR('i', 95, struct pvctxreq)
+#define SIOCGPVCTX _IOWR('i', 96, struct pvctxreq)
+#define SIOCSPVCSIF _IOWR('i', 97, struct ifreq)
+#define SIOCGPVCSIF _IOWR('i', 98, struct ifreq)
+
+#ifdef _KERNEL
+#define ATM_PH_PVCSIF ATM_PH_INERNAL /* pvc shadow interface */
+#endif
+#endif /* ATM_PVCEXT */
+
/*
* XXX forget all the garbage in if_llc.h and do it the easy way
*/
@@ -109,3 +142,10 @@ void atm_input __P((struct ifnet *, struct atm_pseudohdr *,
int atm_output __P((struct ifnet *, struct mbuf *, struct sockaddr *,
struct rtentry *));
#endif
+#ifdef ATM_PVCEXT
+char *shadow2if __P((char *));
+#ifdef _KERNEL
+struct ifnet *pvc_attach __P((struct ifnet *));
+int pvc_setaph __P((struct ifnet *, struct atm_pseudohdr *));
+#endif
+#endif
OpenPOWER on IntegriCloud