summaryrefslogtreecommitdiffstats
path: root/sys/netatm/sigpvc/sigpvc_subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netatm/sigpvc/sigpvc_subr.c')
-rw-r--r--sys/netatm/sigpvc/sigpvc_subr.c187
1 files changed, 0 insertions, 187 deletions
diff --git a/sys/netatm/sigpvc/sigpvc_subr.c b/sys/netatm/sigpvc/sigpvc_subr.c
deleted file mode 100644
index 67164c8..0000000
--- a/sys/netatm/sigpvc/sigpvc_subr.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*-
- * ===================================
- * 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.
- */
-
-/*
- * PVC-only Signalling Manager
- * ---------------------------
- *
- * Subroutines
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netatm/port.h>
-#include <netatm/queue.h>
-#include <netatm/atm.h>
-#include <netatm/atm_sys.h>
-#include <netatm/atm_cm.h>
-#include <netatm/atm_if.h>
-#include <netatm/atm_vc.h>
-#include <netatm/atm_sigmgr.h>
-
-#include <netatm/sigpvc/sigpvc_var.h>
-
-#include <vm/uma.h>
-
-extern uma_zone_t sigpvc_vc_zone;
-
-/*
- * Create a SigPVC Permanent Virtual Channel
- *
- * This function will construct a vccb for a "sigpvc-controlled" PVC
- * and create the service stack requested by the user.
- *
- * Must be called at splnet.
- *
- * Arguments:
- * pvp pointer to sigpvc protocol instance
- * cvp pointer to CM's connection VCC
- * errp location to store an error code if CALL_FAILED is returned
- *
- * Returns:
- * CALL_FAILED - pvc creation failed
- * CALL_CONNECTED - pvc has been successfully created
- *
- */
-int
-sigpvc_create_pvc(pvp, cvp, errp)
- struct sigpvc *pvp;
- Atm_connvc *cvp;
- int *errp;
-{
- Atm_addr_pvc *pp;
- struct vccb *vcp;
- u_int vpi, vci;
-
- pp = (Atm_addr_pvc *)cvp->cvc_attr.called.addr.address;
- vpi = ATM_PVC_GET_VPI(pp);
- vci = ATM_PVC_GET_VCI(pp);
-
- /*
- * Verify requested VPI,VCI
- */
- if ((vpi > pvp->pv_pif->pif_maxvpi) ||
- (vci == 0) || (vci > pvp->pv_pif->pif_maxvci)) {
- *errp = ERANGE;
- return (CALL_FAILED);
- }
-
- for (vcp = Q_HEAD(pvp->pv_vccq, struct vccb); vcp;
- vcp = Q_NEXT(vcp, struct vccb, vc_sigelem)) {
-
- if ((vcp->vc_vpi == vpi) &&
- (vcp->vc_vci == vci)) {
- *errp = EADDRINUSE;
- return (CALL_FAILED);
- }
- }
-
- /*
- * Verify network interface
- */
- if (cvp->cvc_attr.nif) {
- if (cvp->cvc_attr.nif->nif_pif != pvp->pv_pif) {
- *errp = EINVAL;
- return (CALL_FAILED);
- }
- }
-
- /*
- * Allocate control block for PVC
- */
- vcp = uma_zalloc(sigpvc_vc_zone, M_WAITOK | M_ZERO);
- if (vcp == NULL) {
- *errp = ENOMEM;
- return (CALL_FAILED);
- }
-
- /*
- * Fill in VCCB
- */
- vcp->vc_type = VCC_PVC | VCC_IN | VCC_OUT;
- vcp->vc_proto = ATM_SIG_PVC;
- vcp->vc_sstate = VCCS_ACTIVE;
- vcp->vc_ustate = VCCU_OPEN;
- vcp->vc_pif = pvp->pv_pif;
- vcp->vc_nif = cvp->cvc_attr.nif;
- vcp->vc_vpi = vpi;
- vcp->vc_vci = vci;
- vcp->vc_connvc = cvp;
-
- /*
- * Put VCCB on sigpvc queue
- */
- ENQUEUE(vcp, struct vccb, vc_sigelem, pvp->pv_vccq);
-
- /*
- * Pass back VCCB to connection manager
- */
- cvp->cvc_vcc = vcp;
-
- /*
- * PVC is ready to go!
- */
- return (CALL_CONNECTED);
-}
-
-/*
- * Close a SigPVC VCC
- *
- * Clean up vccb, note that it's closing and wait for its freeing.
- *
- * Arguments:
- * vcp pointer to connection's VCC control block
- *
- * Returns:
- * none
- *
- */
-void
-sigpvc_close_vcc(vcp)
- struct vccb *vcp;
-{
-
- /*
- * Sanity check (actually design-flaw check)
- */
- if (vcp->vc_connvc->cvc_upcnt || vcp->vc_connvc->cvc_downcnt)
- panic("sigpvc_close_vcc: stack call");
-
- /*
- * Set state variables
- */
- vcp->vc_ustate = VCCU_CLOSED;
- vcp->vc_sstate = VCCS_FREE;
-
- /*
- * Wait for user to free resources
- */
-}
-
OpenPOWER on IntegriCloud