diff options
Diffstat (limited to 'sys/net/if_atm.h')
-rw-r--r-- | sys/net/if_atm.h | 42 |
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 |