summaryrefslogtreecommitdiffstats
path: root/sys/net/if_atm.h
diff options
context:
space:
mode:
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