diff options
Diffstat (limited to 'sys/netccitt')
| -rw-r--r-- | sys/netccitt/ccitt_proto.c | 18 | ||||
| -rw-r--r-- | sys/netccitt/hd_debug.c | 8 | ||||
| -rw-r--r-- | sys/netccitt/hd_input.c | 55 | ||||
| -rw-r--r-- | sys/netccitt/hd_output.c | 25 | ||||
| -rw-r--r-- | sys/netccitt/hd_subr.c | 33 | ||||
| -rw-r--r-- | sys/netccitt/hd_timer.c | 3 | ||||
| -rw-r--r-- | sys/netccitt/hd_var.h | 16 | ||||
| -rw-r--r-- | sys/netccitt/hdlc.h | 8 | ||||
| -rw-r--r-- | sys/netccitt/if_x25subr.c | 96 | ||||
| -rw-r--r-- | sys/netccitt/pk.h | 6 | ||||
| -rw-r--r-- | sys/netccitt/pk_acct.c | 6 | ||||
| -rw-r--r-- | sys/netccitt/pk_debug.c | 18 | ||||
| -rw-r--r-- | sys/netccitt/pk_input.c | 83 | ||||
| -rw-r--r-- | sys/netccitt/pk_output.c | 24 | ||||
| -rw-r--r-- | sys/netccitt/pk_subr.c | 215 | ||||
| -rw-r--r-- | sys/netccitt/pk_timer.c | 5 | ||||
| -rw-r--r-- | sys/netccitt/pk_usrreq.c | 61 | ||||
| -rw-r--r-- | sys/netccitt/pk_var.h | 85 | ||||
| -rw-r--r-- | sys/netccitt/x25.h | 6 | ||||
| l--------- | sys/netccitt/x25_sockaddr.h | 1 | ||||
| -rw-r--r-- | sys/netccitt/x25acct.h | 6 | ||||
| -rw-r--r-- | sys/netccitt/x25err.h | 6 |
22 files changed, 473 insertions, 311 deletions
diff --git a/sys/netccitt/ccitt_proto.c b/sys/netccitt/ccitt_proto.c index e40572348437..bad486931753 100644 --- a/sys/netccitt/ccitt_proto.c +++ b/sys/netccitt/ccitt_proto.c @@ -36,10 +36,11 @@ * SUCH DAMAGE. * * from: @(#)ccitt_proto.c 7.5 (Berkeley) 8/30/90 - * $Id: ccitt_proto.c,v 1.2 1993/10/16 19:46:33 rgrimes Exp $ + * $Id: ccitt_proto.c,v 1.3 1993/12/19 00:52:12 wollman Exp $ */ #define HDLC #include "param.h" +#include "systm.h" #include "socket.h" #include "protosw.h" #include "domain.h" @@ -58,12 +59,21 @@ extern struct domain ccittdomain; #endif #ifdef XE -int xe_output (), xe_ctlinput (), xe_init(), xe_timer(); +int xe_output (); +void xe_ctlinput (); +void xe_init(); +void xe_timer(); #endif #ifdef HDLC -int hd_output (), hd_ctlinput (), hd_init (), hd_timer (); +int hd_output (); +void hd_ctlinput (); +void hd_init (); +void hd_timer (); #endif -int pk_usrreq (), pk_timer (), pk_init (), pk_ctloutput (); +int pk_usrreq (); +void pk_timer (); +int pk_ctloutput (); +void pk_init (); struct protosw ccittsw[] = { #ifdef XE diff --git a/sys/netccitt/hd_debug.c b/sys/netccitt/hd_debug.c index 0da19c0068df..09a44de9472f 100644 --- a/sys/netccitt/hd_debug.c +++ b/sys/netccitt/hd_debug.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)hd_debug.c 7.5 (Berkeley) 5/29/91 - * $Id: hd_debug.c,v 1.2 1993/10/16 19:46:34 rgrimes Exp $ + * $Id: hd_debug.c,v 1.3 1993/11/25 01:34:16 wollman Exp $ */ #include "param.h" @@ -68,9 +68,11 @@ struct hdlctrace { int lasttracelogged, freezetrace; #endif +void hd_trace (hdp, direction, frame) -struct hdcb *hdp; -register struct Hdlc_frame *frame; + struct hdcb *hdp; + int direction; + register struct Hdlc_frame *frame; { register char *s; register int nr, pf, ns, i; diff --git a/sys/netccitt/hd_input.c b/sys/netccitt/hd_input.c index 1c4cb365b30f..771c295896f1 100644 --- a/sys/netccitt/hd_input.c +++ b/sys/netccitt/hd_input.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * From: @(#)hd_input.c 7.7 (Berkeley) 5/29/91 - * $Id: hd_input.c,v 1.2 1993/09/09 23:20:21 rgrimes Exp $ + * $Id: hd_input.c,v 1.3 1993/11/25 01:34:18 wollman Exp $ */ #include "param.h" @@ -58,13 +58,13 @@ /* * forward references */ -static +static void frame_reject (struct hdcb *hdp, int rejectcode, struct Hdlc_iframe *frame); -static +static void rej_routine (struct hdcb *hdp, int rejnr); -static +static void free_iframes (struct hdcb *hdp, int *nr, int finalbit); /* @@ -74,6 +74,7 @@ free_iframes (struct hdcb *hdp, int *nr, int finalbit); * completed reading a frame. */ +void hdintr () { register struct mbuf *m; @@ -128,9 +129,10 @@ hdintr () pkintr (); } +int process_rxframe (hdp, fbuf) -register struct hdcb *hdp; -register struct mbuf *fbuf; + register struct hdcb *hdp; + register struct mbuf *fbuf; { register int queued = FALSE, frametype, pf; register struct Hdlc_frame *frame; @@ -326,10 +328,11 @@ register struct mbuf *fbuf; return (queued); } +int process_iframe (hdp, fbuf, frame) -register struct hdcb *hdp; -struct mbuf *fbuf; -register struct Hdlc_iframe *frame; + register struct hdcb *hdp; + struct mbuf *fbuf; + register struct Hdlc_iframe *frame; { register int nr = frame -> nr, ns = frame -> ns, @@ -454,11 +457,11 @@ int rear, * condition Y (frame length error) are handled elsewhere. */ -static +static void frame_reject (hdp, rejectcode, frame) -struct hdcb *hdp; -int rejectcode; -struct Hdlc_iframe *frame; + struct hdcb *hdp; + int rejectcode; + struct Hdlc_iframe *frame; { register struct Frmr_frame *frmr = &hd_frmr; @@ -502,10 +505,11 @@ struct Hdlc_iframe *frame; * frames is done here. */ +void process_sframe (hdp, frame, frametype) -register struct hdcb *hdp; -register struct Hdlc_sframe *frame; -int frametype; + register struct hdcb *hdp; + register struct Hdlc_sframe *frame; + int frametype; { register int nr = frame -> nr, pf = frame -> pf, pollbit = 0; @@ -559,8 +563,9 @@ int frametype; bool valid_nr (hdp, nr, finalbit) -register struct hdcb *hdp; -register int finalbit; + register struct hdcb *hdp; + int nr; + register int finalbit; { /* Make sure it really does acknowledge something. */ if (hdp->hd_lastrxnr == nr) @@ -604,10 +609,10 @@ register int finalbit; * It then resets the Send State Variable V(S) to accomplish this. */ -static +static void rej_routine (hdp, rejnr) -register struct hdcb *hdp; -register int rejnr; + register struct hdcb *hdp; + register int rejnr; { register int anchor; @@ -648,11 +653,11 @@ register int rejnr; * when a previously written iframe is acknowledged. */ -static +static void free_iframes (hdp, nr, finalbit) -register struct hdcb *hdp; -int *nr; -register int finalbit; + register struct hdcb *hdp; + int *nr; + register int finalbit; { register int i, k; diff --git a/sys/netccitt/hd_output.c b/sys/netccitt/hd_output.c index 6fab4656f1be..793dcb2b66ab 100644 --- a/sys/netccitt/hd_output.c +++ b/sys/netccitt/hd_output.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)hd_output.c 7.6 (Berkeley) 5/29/91 - * $Id: hd_output.c,v 1.2 1993/10/16 19:46:36 rgrimes Exp $ + * $Id: hd_output.c,v 1.3 1993/11/25 01:34:20 wollman Exp $ */ #include "param.h" @@ -64,9 +64,10 @@ * by the input and control routines of the HDLC layer. */ +void hd_output (hdp, m0) -register struct hdcb *hdp; -struct mbuf *m0; + register struct hdcb *hdp; + struct mbuf *m0; { struct x25config *xcp; register struct mbuf *m = m0; @@ -100,8 +101,9 @@ struct mbuf *m0; hd_start (hdp); } +void hd_start (hdp) -register struct hdcb *hdp; + register struct hdcb *hdp; { register struct mbuf *m; @@ -141,10 +143,11 @@ register struct hdcb *hdp; * of old frames is required. */ +void hd_send_iframe (hdp, buf, poll_bit) -register struct hdcb *hdp; -register struct mbuf *buf; -int poll_bit; + register struct hdcb *hdp; + register struct mbuf *buf; + int poll_bit; { register struct Hdlc_iframe *iframe; struct mbuf *m; @@ -192,9 +195,10 @@ int poll_bit; SET_TIMER (hdp); } +void hd_ifoutput(hdp, m) -register struct mbuf *m; -register struct hdcb *hdp; + register struct mbuf *m; + register struct hdcb *hdp; { /* * Queue message on interface, and start output if interface @@ -222,8 +226,9 @@ register struct hdcb *hdp; * received an acknowledgement for a iframe. */ +void hd_resend_iframe (hdp) -register struct hdcb *hdp; + register struct hdcb *hdp; { if (hdp->hd_retxcnt++ < hd_n2) { diff --git a/sys/netccitt/hd_subr.c b/sys/netccitt/hd_subr.c index 014f046d432d..d72b10669755 100644 --- a/sys/netccitt/hd_subr.c +++ b/sys/netccitt/hd_subr.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)hd_subr.c 7.6 (Berkeley) 5/29/91 - * $Id: hd_subr.c,v 1.2 1993/10/16 19:46:37 rgrimes Exp $ + * $Id: hd_subr.c,v 1.3 1993/11/25 01:34:21 wollman Exp $ */ #include "param.h" @@ -55,14 +55,17 @@ #include "hd_var.h" #include "x25.h" +void hd_init () { hdintrq.ifq_maxlen = IFQ_MAXLEN; } +int hd_ctlinput (prc, addr) -struct sockaddr *addr; + int prc; + struct sockaddr *addr; { register struct x25config *xcp = (struct x25config *)addr; register struct hdcb *hdp; @@ -125,8 +128,9 @@ struct sockaddr *addr; return (0); } +void hd_initvars (hdp) -register struct hdcb *hdp; + register struct hdcb *hdp; { register struct mbuf *m; register int i; @@ -151,9 +155,10 @@ register struct hdcb *hdp; hdp->hd_condition = 0; } +int hd_decode (hdp, frame) -register struct hdcb *hdp; -struct Hdlc_frame *frame; + register struct hdcb *hdp; + struct Hdlc_frame *frame; { register int frametype = ILLEGAL; register struct Hdlc_iframe *iframe = (struct Hdlc_iframe *) frame; @@ -216,9 +221,10 @@ struct Hdlc_frame *frame; * Only supervisory or unnumbered frames are processed. */ +void hd_writeinternal (hdp, frametype, pf) -register struct hdcb *hdp; -register int frametype, pf; + register struct hdcb *hdp; + register int frametype, pf; { register struct mbuf *buf; struct Hdlc_frame *frame; @@ -315,9 +321,10 @@ struct hdtxq *q; return (m); } +void hd_append (q, m) -register struct hdtxq *q; -register struct mbuf *m; + register struct hdtxq *q; + register struct mbuf *m; { m -> m_act = NULL; @@ -328,8 +335,9 @@ register struct mbuf *m; q -> tail = m; } +void hd_flush (ifp) -struct ifnet *ifp; + struct ifnet *ifp; { register struct mbuf *m; register int s; @@ -344,9 +352,10 @@ struct ifnet *ifp; } } +void hd_message (hdp, msg) -struct hdcb *hdp; -char *msg; + struct hdcb *hdp; + const char *msg; { char *format_ntn (); diff --git a/sys/netccitt/hd_timer.c b/sys/netccitt/hd_timer.c index fc68b147f82d..88c8987788ef 100644 --- a/sys/netccitt/hd_timer.c +++ b/sys/netccitt/hd_timer.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)hd_timer.c 7.4 (Berkeley) 5/29/91 - * $Id: hd_timer.c,v 1.2 1993/10/16 19:46:40 rgrimes Exp $ + * $Id: hd_timer.c,v 1.3 1993/11/25 01:34:22 wollman Exp $ */ #include "param.h" @@ -71,6 +71,7 @@ int hd_n2 = N2; * amount - if expired then process the event. */ +void hd_timer () { register struct hdcb *hdp; diff --git a/sys/netccitt/hd_var.h b/sys/netccitt/hd_var.h index b87e8da8f0d3..df87eb6cf21a 100644 --- a/sys/netccitt/hd_var.h +++ b/sys/netccitt/hd_var.h @@ -36,9 +36,12 @@ * SUCH DAMAGE. * * from: @(#)hd_var.h 7.4 (Berkeley) 5/29/91 - * $Id: hd_var.h,v 1.2 1993/10/16 19:46:41 rgrimes Exp $ + * $Id: hd_var.h,v 1.4 1993/11/25 01:34:22 wollman Exp $ */ +#ifndef _NETCCITT_HD_VAR_H_ +#define _NETCCITT_HD_VAR_H_ 1 + /* * * hdlc control block @@ -105,4 +108,13 @@ struct ifqueue hdintrq; /* hdlc packet input queue */ int hd_t1; /* timer T1 value */ int hd_t3; /* RR send timer */ int hd_n2; /* frame retransmission limit */ -#endif + +extern void process_sframe(struct hdcb *, struct Hdlc_sframe *, int); +extern void hd_start(struct hdcb *); +extern void hd_send_iframe(struct hdcb *, struct mbuf *, int); +extern void hd_writeinternal(struct hdcb *, int, int); +extern void hd_flush(struct ifnet *); +extern void hd_message(struct hdcb *, const char *); + +#endif /* KERNEL */ +#endif /* _NETCCITT_HD_VAR_H_ */ diff --git a/sys/netccitt/hdlc.h b/sys/netccitt/hdlc.h index 7faa6f51bb1d..313154df9ba4 100644 --- a/sys/netccitt/hdlc.h +++ b/sys/netccitt/hdlc.h @@ -36,9 +36,12 @@ * SUCH DAMAGE. * * from: @(#)hdlc.h 7.4 (Berkeley) 5/6/91 - * $Id: hdlc.h,v 1.2 1993/10/16 19:46:43 rgrimes Exp $ + * $Id: hdlc.h,v 1.3 1993/11/07 17:47:24 wollman Exp $ */ +#ifndef _NETCCITT_HDLC_H_ +#define _NETCCITT_HDLC_H_ 1 + #ifndef ORDER4 #define FALSE 0 #define TRUE 1 @@ -152,6 +155,9 @@ struct Hdlc_frame { #define TX 0 #define RX 1 +#ifdef KERNEL bool range_check (); bool valid_nr (); struct mbuf *hd_remove (); +#endif /* KERNEL */ +#endif /* _NETCCITT_HDLC_H_ */ diff --git a/sys/netccitt/if_x25subr.c b/sys/netccitt/if_x25subr.c index ac2095b4ed90..511369646a69 100644 --- a/sys/netccitt/if_x25subr.c +++ b/sys/netccitt/if_x25subr.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * from: @(#)if_x25subr.c 7.14 (Berkeley) 6/26/91 - * $Id: if_x25subr.c,v 1.2 1993/10/16 19:46:44 rgrimes Exp $ + * $Id: if_x25subr.c,v 1.5 1993/12/20 14:58:35 wollman Exp $ */ #include "param.h" @@ -115,8 +115,10 @@ register struct rtentry *rt; } return lx; } + +void x25_lxfree(lx) -register struct llinfo_x25 *lx; + register struct llinfo_x25 *lx; { register struct rtentry *rt = lx->lx_rt; register struct pklcd *lcp = lx->lx_lcd; @@ -136,9 +138,10 @@ register struct llinfo_x25 *lx; /* * Process a x25 packet as datagram; */ +void x25_ifinput(lcp, m) -struct pklcd *lcp; -register struct mbuf *m; + struct pklcd *lcp; + register struct mbuf *m; { struct llinfo_x25 *lx = (struct llinfo_x25 *)lcp->lcd_upnext; register struct ifnet *ifp; @@ -200,9 +203,11 @@ register struct mbuf *m; } splx(s); } + +void x25_connect_callback(lcp, m) -register struct pklcd *lcp; -register struct mbuf *m; + register struct pklcd *lcp; + register struct mbuf *m; { register struct llinfo_x25 *lx = (struct llinfo_x25 *)lcp->lcd_upnext; if (m == 0) @@ -228,13 +233,13 @@ register struct mbuf *m; #define SA(p) ((struct sockaddr *)(p)) #define RT(p) ((struct rtentry *)(p)) +void x25_dgram_incoming(lcp, m0) -register struct pklcd *lcp; -struct mbuf *m0; + register struct pklcd *lcp; + struct mbuf *m0; { register struct rtentry *rt, *nrt; register struct mbuf *m = m0->m_next; /* m0 has calling sockaddr_x25 */ - int x25_rtrequest(); rt = rtalloc1(SA(&lcp->lcd_faddr), 0); if (rt == 0) { @@ -262,21 +267,22 @@ refuse: lcp->lcd_upper = 0; /* * X.25 output routine. */ +int x25_ifoutput(ifp, m0, dst, rt) -struct ifnet *ifp; -struct mbuf *m0; -struct sockaddr *dst; -register struct rtentry *rt; + struct ifnet *ifp; + struct mbuf *m0; + struct sockaddr *dst; + register struct rtentry *rt; { register struct mbuf *m = m0; register struct llinfo_x25 *lx; struct pklcd *lcp; int s, error = 0; -int plen; -for (plen = 0; m; m = m->m_next) - plen += m->m_len; -m = m0; + int plen; + for (plen = 0; m; m = m->m_next) + plen += m->m_len; + m = m0; if ((ifp->if_flags & IFF_UP) == 0) senderr(ENETDOWN); @@ -328,7 +334,7 @@ next_circuit: if (dst->sa_family == AF_INET && ifp->if_type == IFT_X25DDN && rt->rt_gateway->sa_family != AF_CCITT) - x25_ddnip_to_ccitt(dst, rt); + x25_ddnip_to_ccitt((struct sockaddr_in *)dst, rt); if (rt->rt_gateway->sa_family != AF_CCITT) { if ((rt->rt_flags & RTF_XRESOLVE) == 0) senderr(EHOSTUNREACH); @@ -376,8 +382,9 @@ next_circuit: /* * Simpleminded timer routine. */ +void x25_iftimeout(ifp) -struct ifnet *ifp; + struct ifnet *ifp; { register struct pkcb *pkcb = 0; register struct pklcd **lcpp, *lcp; @@ -399,9 +406,11 @@ struct ifnet *ifp; * This routine gets called when validating additions of new routes * or deletions of old ones. */ +void x25_rtrequest(cmd, rt, dst) -register struct rtentry *rt; -struct sockaddr *dst; + int cmd; + register struct rtentry *rt; + struct sockaddr *dst; { register struct llinfo_x25 *lx = (struct llinfo_x25 *)rt->rt_llinfo; register struct sockaddr_x25 *sa =(struct sockaddr_x25 *)rt->rt_gateway; @@ -432,7 +441,8 @@ struct sockaddr *dst; if (lcp->lcd_ceaddr && Bcmp(rt->rt_gateway, lcp->lcd_ceaddr, lcp->lcd_ceaddr->x25_len) != 0) { - x25_rtinvert(RTM_DELETE, lcp->lcd_ceaddr, rt); + x25_rtinvert(RTM_DELETE, + (struct sockaddr *)lcp->lcd_ceaddr, rt); lcp->lcd_upper = 0; pk_disconnect(lcp); } @@ -443,9 +453,11 @@ struct sockaddr *dst; int x25_dont_rtinvert = 0; +void x25_rtinvert(cmd, sa, rt) -register struct sockaddr *sa; -register struct rtentry *rt; + int cmd; + register struct sockaddr *sa; + register struct rtentry *rt; { struct rtentry *rt2 = 0; /* @@ -496,9 +508,10 @@ union imp_addr { * The following is totally bogus and here only to preserve * the IP to X.25 translation. */ +void x25_ddnip_to_ccitt(src, rt) -struct sockaddr_in *src; -register struct rtentry *rt; + struct sockaddr_in *src; + register struct rtentry *rt; { register struct sockaddr_x25 *dst = (struct sockaddr_x25 *)rt->rt_gateway; union imp_addr imp_addr; @@ -548,9 +561,11 @@ register struct rtentry *rt; * This is a utility routine to be called by x25 devices when a * call request is honored with the intent of starting datagram forwarding. */ +void x25_dg_rtinit(dst, ia, af) -struct sockaddr_x25 *dst; -register struct x25_ifaddr *ia; + struct sockaddr_x25 *dst; + register struct x25_ifaddr *ia; + int af; { struct sockaddr *sa = 0; struct rtentry *rt; @@ -603,7 +618,7 @@ register struct x25_ifaddr *ia; imp_no = temp & 0xff; break; default: - return (0L); + return; } imp_addr.ip = my_addr; if ((imp_addr.imp.s_net & 0x80) == 0x00) { @@ -627,7 +642,7 @@ register struct x25_ifaddr *ia; * This uses the X25 routing table to do inverse * lookup of x25 address to sockaddr. */ - if (rt = rtalloc1(dst, 0)) { + if (rt = rtalloc1((struct sockaddr *)dst, 0)) { sa = rt->rt_gateway; rt->rt_refcnt--; } @@ -655,6 +670,7 @@ struct sockaddr_x25 x25_dgmask = { int x25_startproto = 1; struct radix_tree_head *x25_rnhead; +void pk_init() { /* @@ -674,18 +690,19 @@ pk_init() struct x25_dgproto { u_char spi; u_char spilen; - int (*f)(); + void (*f)(struct pklcd *, struct mbuf *); } x25_dgprototab[] = { #if defined(ISO) && defined(TPCONS) -{ 0x0, 0, tp_incoming}, +{ 0x0, 0, (void (*)(struct pklcd *, struct mbuf *))tp_incoming}, #endif { 0xcc, 1, x25_dgram_incoming}, { 0xcd, 1, x25_dgram_incoming}, { 0x81, 1, x25_dgram_incoming}, }; +int pk_user_protolisten(info) -register u_char *info; + register u_char *info; { register struct x25_dgproto *dp = x25_dgprototab + ((sizeof x25_dgprototab) / (sizeof *dp)); @@ -713,9 +730,10 @@ gotspi: if (info[1]) * routing entry. If freshly allocated, it glues back the vc from * the rtentry to the socket. */ +int pk_rtattach(so, m0) -register struct socket *so; -struct mbuf *m0; + register struct socket *so; + struct mbuf *m0; { register struct pklcd *lcp = (struct pklcd *)so->so_pcb; register struct mbuf *m = m0; @@ -774,9 +792,11 @@ struct mbuf *m0; } return 0; } + +void x25_rtattach(lcp0, rt) -register struct pklcd *lcp0; -struct rtentry *rt; + register struct pklcd *lcp0; + struct rtentry *rt; { register struct llinfo_x25 *lx = (struct llinfo_x25 *)rt->rt_llinfo; register struct pklcd *lcp; @@ -789,7 +809,7 @@ struct rtentry *rt; } else { lx = x25_lxalloc(rt); if (lx == 0) - return ENOBUFS; + return; } } lx->lx_lcd = lcp = lcp0; diff --git a/sys/netccitt/pk.h b/sys/netccitt/pk.h index cd0d34c13389..afccb374d219 100644 --- a/sys/netccitt/pk.h +++ b/sys/netccitt/pk.h @@ -36,9 +36,12 @@ * SUCH DAMAGE. * * from: @(#)pk.h 7.8 (Berkeley) 4/30/91 - * $Id: pk.h,v 1.2 1993/10/16 19:46:46 rgrimes Exp $ + * $Id: pk.h,v 1.3 1993/11/07 17:47:25 wollman Exp $ */ +#ifndef _NETCCITT_PK_H_ +#define _NETCCITT_PK_H_ 1 + /* * * X.25 Packet Level Definitions: @@ -191,3 +194,4 @@ struct mbuf *pk_template (); #define DIAG_TYPE 14 * MAXSTATES #define INVALID_PACKET 15 * MAXSTATES #define DELETE_PACKET INVALID_PACKET +#endif /* _NETCCITT_PK_H_ */ diff --git a/sys/netccitt/pk_acct.c b/sys/netccitt/pk_acct.c index c2b0789bbd0c..d7f31809fd82 100644 --- a/sys/netccitt/pk_acct.c +++ b/sys/netccitt/pk_acct.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_acct.c 7.6 (Berkeley) 6/26/91 - * $Id: pk_acct.c,v 1.2 1993/10/16 19:46:47 rgrimes Exp $ + * $Id: pk_acct.c,v 1.3 1993/11/25 01:34:27 wollman Exp $ */ #include "param.h" @@ -62,6 +62,7 @@ struct vnode *pkacctp; * Turn on packet accounting */ +int pk_accton (path) char *path; { @@ -95,8 +96,9 @@ pk_accton (path) * Write a record on the accounting file. */ +void pk_acct (lcp) -register struct pklcd *lcp; + register struct pklcd *lcp; { register struct vnode *vp; register struct sockaddr_x25 *sa; diff --git a/sys/netccitt/pk_debug.c b/sys/netccitt/pk_debug.c index 0436dbb60fe2..a1f67de77b4d 100644 --- a/sys/netccitt/pk_debug.c +++ b/sys/netccitt/pk_debug.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_debug.c 7.7 (Berkeley) 5/9/91 - * $Id: pk_debug.c,v 1.2 1993/10/16 19:46:48 rgrimes Exp $ + * $Id: pk_debug.c,v 1.4 1993/12/19 00:52:17 wollman Exp $ */ #include "param.h" @@ -53,13 +53,13 @@ #include "pk.h" #include "pk_var.h" -char *pk_state[] = { +const char *const pk_state[] = { "Listen", "Ready", "Received-Call", "Sent-Call", "Data-Transfer","Received-Clear", "Sent-Clear", }; -char *pk_name[] = { +const char *const pk_name[] = { "Call", "Call-Conf", "Clear", "Clear-Conf", "Data", "Intr", "Intr-Conf", "Rr", "Rnr", "Reset", "Reset-Conf", @@ -67,10 +67,11 @@ char *pk_name[] = { "Invalid" }; +void pk_trace (xcp, m, dir) -struct x25config *xcp; -register struct mbuf *m; -char *dir; + struct x25config *xcp; + register struct mbuf *m; + const char *dir; { register char *s; struct x25_packet *xp = mtod(m, struct x25_packet *); @@ -91,9 +92,10 @@ char *dir; printf ("\n"); } +void mbuf_cache(c, m) -register struct mbuf_cache *c; -struct mbuf *m; + register struct mbuf_cache *c; + struct mbuf *m; { register struct mbuf **mp; diff --git a/sys/netccitt/pk_input.c b/sys/netccitt/pk_input.c index fccb75606069..1445bed6ce14 100644 --- a/sys/netccitt/pk_input.c +++ b/sys/netccitt/pk_input.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_input.c 7.14 (Berkeley) 7/16/91 - * $Id: pk_input.c,v 1.2 1993/10/16 19:46:50 rgrimes Exp $ + * $Id: pk_input.c,v 1.5 1993/12/19 00:52:18 wollman Exp $ */ #include "param.h" @@ -101,13 +101,14 @@ caddr_t llnext; return (pkp); } +int pk_resize (pkp) -register struct pkcb *pkp; + register struct pkcb *pkp; { struct pklcd *dev_lcp = 0; struct x25config *xcp = pkp -> pk_xcp; if (pkp -> pk_chan && - (pkp -> pk_maxlcn != xcp -> xc_maxlcn)) { + ((u_long)pkp -> pk_maxlcn != (u_long)xcp -> xc_maxlcn)) { pk_restart (pkp, X25_RESTART_NETWORK_CONGESTION); dev_lcp = pkp -> pk_chan[0]; free ((caddr_t)pkp -> pk_chan, M_IFADDR); @@ -144,8 +145,10 @@ register struct pkcb *pkp; * becomes operational, is reset, or when the link goes down. */ +int pk_ctlinput (code, pkp) -register struct pkcb *pkp; + int code; + register struct pkcb *pkp; { @@ -167,11 +170,13 @@ register struct pkcb *pkp; } return (0); } + struct ifqueue pkintrq; /* * This routine is called if there are semi-smart devices that do HDLC * in hardware and want to queue the packet and call level 3 directly */ +void pkintr () { register struct mbuf *m; @@ -210,8 +215,9 @@ struct mbuf_cache pk_input_cache = {0 }; * */ +void pk_input (m) -register struct mbuf *m; + register struct mbuf *m; { register struct x25_packet *xp; register struct pklcd *lcp; @@ -255,7 +261,7 @@ register struct mbuf *m; /* send response on lcd 0's output queue */ lcp = pkp -> pk_chan[0]; lcp -> lcd_template = pk_template (lcn, X25_CLEAR_CONFIRM); - pk_output (lcp); + pk_output (lcp, 0); m_freem (m); return; } @@ -317,7 +323,7 @@ register struct mbuf *m; case CLEAR + DATA_TRANSFER: lcp -> lcd_state = RECEIVED_CLEAR; lcp -> lcd_template = pk_template (lcp -> lcd_lcn, X25_CLEAR_CONFIRM); - pk_output (lcp); + pk_output (lcp, 0); pk_clearcause (pkp, xp); if (lcp -> lcd_upper) { MCHTYPE(m, MT_CONTROL); @@ -455,7 +461,7 @@ register struct mbuf *m; break; lcp -> lcd_intrdata = xp -> packet_data; lcp -> lcd_template = pk_template (lcp -> lcd_lcn, X25_INTERRUPT_CONFIRM); - pk_output (lcp); + pk_output (lcp, 0); m -> m_data += PKHEADERLN; m -> m_len -= PKHEADERLN; m -> m_pkthdr.len -= PKHEADERLN; @@ -493,7 +499,7 @@ register struct mbuf *m; } if (lcp -> lcd_rnr_condition == TRUE) lcp -> lcd_rnr_condition = FALSE; - pk_output (lcp); + pk_output (lcp, 0); break; /* @@ -528,7 +534,7 @@ register struct mbuf *m; lcp -> lcd_rsn = MODULUS - 1; lcp -> lcd_template = pk_template (lcp -> lcd_lcn, X25_RESET_CONFIRM); - pk_output (lcp); + pk_output (lcp, 0); pk_flush(lcp); if (so == 0) @@ -544,7 +550,7 @@ register struct mbuf *m; case RESET_CONF + DATA_TRANSFER: if (lcp -> lcd_reset_condition) { lcp -> lcd_reset_condition = FALSE; - pk_output (lcp); + pk_output (lcp, 0); } else pk_procerror (RESET, lcp, "unexpected packet", 32); @@ -581,7 +587,7 @@ register struct mbuf *m; pk_restartcause (pkp, xp); pkp -> pk_chan[0] -> lcd_template = pk_template (0, X25_RESTART_CONFIRM); - pk_output (pkp -> pk_chan[0]); + pk_output (pkp -> pk_chan[0], 0); } break; @@ -623,10 +629,10 @@ register struct mbuf *m; m_freem (m); } -static +static void prune_dnic(from, to, dnicname, xcp) -char *from, *to, *dnicname; -register struct x25config *xcp; + char *from, *to, *dnicname; + register struct x25config *xcp; { register char *cp1 = from, *cp2 = from; if (xcp->xc_prepnd0 && *cp1 == '0') { @@ -642,10 +648,11 @@ copyrest: for (cp1 = dnicname; *cp2 = *cp1++;) cp2++; } -/* static */ + +static void pk_simple_bsd (from, to, lower, len) -register octet *from, *to; -register len, lower; + register octet *from, *to; + register len, lower; { register int c; while (--len >= 0) { @@ -659,11 +666,12 @@ register len, lower; *to = 0; } -/*static octet * */ +static void pk_from_bcd (a, iscalling, sa, xcp) -register struct x25_calladdr *a; -register struct sockaddr_x25 *sa; -register struct x25config *xcp; + register struct x25_calladdr *a; + int iscalling; + register struct sockaddr_x25 *sa; + register struct x25config *xcp; { octet buf[MAXADDRLN+1]; octet *cp; @@ -689,15 +697,15 @@ register struct x25config *xcp; bcopy ((caddr_t)buf, (caddr_t)sa -> x25_addr, count + 1); } -static +static void save_extra(m0, fp, so) -struct mbuf *m0; -octet *fp; -struct socket *so; + struct mbuf *m0; + octet *fp; + struct socket *so; { - register struct mbuf *m; + register struct mbuf *m = 0; struct cmsghdr cmsghdr; - if (m = m_copym (m, 0, (int)M_COPYALL)) { + if (m = m_copym (m, 0, (int)M_COPYALL, M_DONTWAIT)) { int off = fp - mtod (m0, octet *); int len = m->m_pkthdr.len - off + sizeof (cmsghdr); cmsghdr.cmsg_len = len; @@ -719,9 +727,10 @@ struct socket *so; * sockets awaiting connections. */ +void pk_incoming_call (pkp, m0) -struct mbuf *m0; -struct pkcb *pkp; + struct pkcb *pkp; + struct mbuf *m0; { register struct pklcd *lcp = 0, *l; register struct sockaddr_x25 *sa; @@ -748,8 +757,10 @@ struct pkcb *pkp; ((a -> called_addrlen + a -> calling_addrlen + 1) / 2)); u += *u + 1; udlen = min (16, ((octet *)xp) + len - u); +#if 0 if (udlen < 0) udlen = 0; +#endif pk_from_bcd (a, 1, sa, pkp -> pk_xcp); /* get calling address */ pk_parse_facilities (facp, sa); bcopy ((caddr_t)u, sa -> x25_udata, udlen); @@ -819,7 +830,7 @@ struct pkcb *pkp; lcp -> lcd_flags &= ~X25_DBIT; } if (so) { - pk_output (lcp); + pk_output (lcp, 0); soisconnected (so); if (so -> so_options & SO_OOBINLINE) save_extra(m0, facp, so); @@ -859,9 +870,10 @@ struct pkcb *pkp; pk_clear (lcp, 0, 1); } +void pk_call_accepted (lcp, m) -struct pklcd *lcp; -struct mbuf *m; + struct pklcd *lcp; + struct mbuf *m; { register struct x25_calladdr *ap; register octet *fcp; @@ -885,9 +897,10 @@ struct mbuf *m; lcp -> lcd_upper(lcp, m); } +void pk_parse_facilities (fcp, sa) -register octet *fcp; -register struct sockaddr_x25 *sa; + register octet *fcp; + register struct sockaddr_x25 *sa; { register octet *maxfcp; diff --git a/sys/netccitt/pk_output.c b/sys/netccitt/pk_output.c index e907c4dd785d..8b217179a6e5 100644 --- a/sys/netccitt/pk_output.c +++ b/sys/netccitt/pk_output.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_output.c 7.10 (Berkeley) 5/29/91 - * $Id: pk_output.c,v 1.2 1993/10/16 19:46:51 rgrimes Exp $ + * $Id: pk_output.c,v 1.4 1993/12/19 00:52:19 wollman Exp $ */ #include "param.h" @@ -54,10 +54,17 @@ #include "pk_var.h" struct mbuf_cache pk_output_cache = {0 }; -struct mbuf *nextpk (); +static struct mbuf *nextpk (struct pklcd *); -pk_output (lcp) -register struct pklcd *lcp; +/* + * The `n' argument is just there to make if_x25subr.c happy. We + * don't actually do anything with it, although meybe we should. + * All the other code passes in a null pointer. + */ +int +pk_output (lcp, n) + register struct pklcd *lcp; + struct mbuf *n; { register struct x25_packet *xp; register struct mbuf *m; @@ -65,7 +72,7 @@ register struct pklcd *lcp; if (lcp == 0 || pkp == 0) { printf ("pk_output: zero arg\n"); - return; + return -1; } while ((m = nextpk (lcp)) != NULL) { @@ -166,7 +173,7 @@ register struct pklcd *lcp; default: m_freem (m); - return; + return 0; } /* Trace the packet. */ @@ -177,6 +184,7 @@ register struct pklcd *lcp; mbuf_cache(&pk_output_cache, m); (*pkp -> pk_lloutput) (pkp -> pk_llnext, m); } + return 0; } /* @@ -184,9 +192,9 @@ register struct pklcd *lcp; * packet is composed of one or more mbufs. */ -struct mbuf * +static struct mbuf * nextpk (lcp) -struct pklcd *lcp; + struct pklcd *lcp; { register struct mbuf *m, *n; struct socket *so = lcp -> lcd_so; diff --git a/sys/netccitt/pk_subr.c b/sys/netccitt/pk_subr.c index 6b4c98772e88..f8da003dc027 100644 --- a/sys/netccitt/pk_subr.c +++ b/sys/netccitt/pk_subr.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_subr.c 7.16 (Berkeley) 6/6/91 - * $Id: pk_subr.c,v 1.2 1993/10/16 19:46:53 rgrimes Exp $ + * $Id: pk_subr.c,v 1.5 1993/12/19 00:52:20 wollman Exp $ */ #include "param.h" @@ -48,6 +48,7 @@ #include "errno.h" #include "time.h" #include "kernel.h" +#include "machine/stdarg.h" #include "../net/if.h" @@ -74,7 +75,6 @@ struct socket *so; { register struct pklcd *lcp; register int error = ENOBUFS; - int pk_output(); MALLOC(lcp, struct pklcd *, sizeof (*lcp), M_PCB, M_NOWAIT); if (lcp) { @@ -101,8 +101,9 @@ struct socket *so; * Disconnect X.25 protocol from socket. */ +void pk_disconnect (lcp) -register struct pklcd *lcp; + register struct pklcd *lcp; { register struct socket *so = lcp -> lcd_so; register struct pklcd *l, *p; @@ -145,8 +146,9 @@ register struct pklcd *lcp; * connection and internal descriptors. Wake up any sleepers. */ +void pk_close (lcp) -struct pklcd *lcp; + struct pklcd *lcp; { register struct socket *so = lcp -> lcd_so; @@ -157,7 +159,7 @@ struct pklcd *lcp; so -> so_pcb = 0; soisdisconnected (so); - /* sofree (so); /* gak!!! you can't do that here */ + /* sofree (so);*/ /* gak!!! you can't do that here */ } /* @@ -206,9 +208,10 @@ int lcn, type; * state. */ +void pk_restart (pkp, restart_cause) -register struct pkcb *pkp; -int restart_cause; + register struct pkcb *pkp; + int restart_cause; { register struct mbuf *m; register struct pklcd *lcp; @@ -239,7 +242,7 @@ int restart_cause; m -> m_pkthdr.len = m -> m_len += 2; mtod (m, struct x25_packet *) -> packet_data = 0; /* DTE only */ mtod (m, octet *)[4] = restart_cause; - pk_output (lcp); + pk_output (lcp, 0); } @@ -247,8 +250,9 @@ int restart_cause; * This procedure frees up the Logical Channel Descripter. */ +void pk_freelcd (lcp) -register struct pklcd *lcp; + register struct pklcd *lcp; { if (lcp == NULL) return; @@ -268,9 +272,10 @@ register struct pklcd *lcp; * Call User Data field. */ +int pk_bind (lcp, nam) -struct pklcd *lcp; -struct mbuf *nam; + struct pklcd *lcp; + struct mbuf *nam; { register struct pkcb *pkp; register struct pklcd *pp; @@ -316,8 +321,9 @@ struct mbuf *nam; /* * Include a bound control block in the list of listeners. */ +int pk_listen (lcp) -register struct pklcd *lcp; + register struct pklcd *lcp; { register struct pklcd **pp; @@ -341,8 +347,11 @@ register struct pklcd *lcp; /* * Include a listening control block for the benefit of other protocols. */ +int pk_protolisten (spi, spilen, callee) -int (*callee) (); + int spi; + int spilen; + void (*callee) (); { register struct pklcd *lcp = pk_attach ((struct socket *)0); register struct mbuf *nam; @@ -375,10 +384,11 @@ int (*callee) (); * by the remote DTE. */ +void pk_assoc (pkp, lcp, sa) -register struct pkcb *pkp; -register struct pklcd *lcp; -register struct sockaddr_x25 *sa; + register struct pkcb *pkp; + register struct pklcd *lcp; + register struct sockaddr_x25 *sa; { lcp -> lcd_pkp = pkp; @@ -400,11 +410,12 @@ register struct sockaddr_x25 *sa; lcp -> lcd_stime = time.tv_sec; } +int pk_connect (lcp, sa) -register struct pklcd *lcp; -register struct sockaddr_x25 *sa; + register struct pklcd *lcp; + register struct sockaddr_x25 *sa; { - register struct pkcb *pkp; + register struct pkcb *pkp = 0; if (sa -> x25_addr[0] == '\0') return (EDESTADDRREQ); @@ -449,10 +460,11 @@ struct bcdinfo { * address, facilities fields and the user data field. */ +void pk_callrequest (lcp, sa, xcp) -struct pklcd *lcp; -register struct sockaddr_x25 *sa; -register struct x25config *xcp; + struct pklcd *lcp; + register struct sockaddr_x25 *sa; + register struct x25config *xcp; { register struct x25_calladdr *a; register struct mbuf *m = lcp -> lcd_template; @@ -480,9 +492,11 @@ register struct x25config *xcp; m_copyback (m, m -> m_pkthdr.len, sa -> x25_udlen, sa -> x25_udata); } +void pk_build_facilities (m, sa, type) -register struct mbuf *m; -struct sockaddr_x25 *sa; + register struct mbuf *m; + struct sockaddr_x25 *sa; + int type; { register octet *cp; register octet *fcp; @@ -516,10 +530,11 @@ struct sockaddr_x25 *sa; m -> m_pkthdr.len = (m -> m_len += *cp + 1); } +int to_bcd (b, sa, xcp) -register struct bcdinfo *b; -struct sockaddr_x25 *sa; -register struct x25config *xcp; + register struct bcdinfo *b; + struct sockaddr_x25 *sa; + register struct x25config *xcp; { register char *x = sa -> x25_addr; unsigned start = b -> posn; @@ -558,8 +573,9 @@ register struct x25config *xcp; * search is from the highest number to lowest number (DTE). */ +int pk_getlcn (pkp) -register struct pkcb *pkp; + register struct pkcb *pkp; { register int i; @@ -576,9 +592,11 @@ register struct pkcb *pkp; * This procedure sends a CLEAR request packet. The lc state is * set to "SENT_CLEAR". */ - +void pk_clear (lcp, diagnostic, abortive) -register struct pklcd *lcp; + register struct pklcd *lcp; + int diagnostic; + int abortive; { register struct mbuf *m = pk_template (lcp -> lcd_lcn, X25_CLEAR); @@ -597,7 +615,7 @@ register struct pklcd *lcp; struct sockbuf *sb = so ? & so -> so_snd : & lcp -> lcd_sb; sbappendrecord (sb, m); } - pk_output (lcp); + pk_output (lcp, 0); } @@ -606,8 +624,11 @@ register struct pklcd *lcp; * inward data flow, if the current state changes (blocked ==> open or * vice versa), or if forced to generate one. One forces RNR's to ack data. */ +void pk_flowcontrol (lcp, inhibit, forced) -register struct pklcd *lcp; + register struct pklcd *lcp; + int inhibit; + int forced; { inhibit = (inhibit != 0); if (lcp == 0 || lcp -> lcd_state != DATA_TRANSFER || @@ -616,7 +637,7 @@ register struct pklcd *lcp; lcp -> lcd_rxrnr_condition = inhibit; lcp -> lcd_template = pk_template (lcp -> lcd_lcn, inhibit ? X25_RNR : X25_RR); - pk_output (lcp); + pk_output (lcp, 0); } /* @@ -624,9 +645,10 @@ register struct pklcd *lcp; * virtual circuit. */ -static +static void pk_reset (lcp, diagnostic) -register struct pklcd *lcp; + register struct pklcd *lcp; + int diagnostic; { register struct mbuf *m; register struct socket *so = lcp -> lcd_so; @@ -650,7 +672,7 @@ register struct pklcd *lcp; m -> m_pkthdr.len = m -> m_len += 2; mtod (m, struct x25_packet *) -> packet_data = 0; mtod (m, octet *)[4] = diagnostic; - pk_output (lcp); + pk_output (lcp, 0); } @@ -659,8 +681,9 @@ register struct pklcd *lcp; * virtual circuit. */ +void pk_flush (lcp) -register struct pklcd *lcp; + register struct pklcd *lcp; { register struct socket *so; @@ -685,10 +708,12 @@ register struct pklcd *lcp; /* * This procedure handles all local protocol procedure errors. */ - +void pk_procerror (error, lcp, errstr, diagnostic) -register struct pklcd *lcp; -char *errstr; + int error; + register struct pklcd *lcp; + const char *errstr; + int diagnostic; { pk_message (lcp -> lcd_lcn, lcp -> lcd_pkp -> pk_xcp, errstr); @@ -712,10 +737,10 @@ char *errstr; * and process the P(R) values received in the DATA, RR OR RNR * packets. */ - +int pk_ack (lcp, pr) -struct pklcd *lcp; -unsigned pr; + struct pklcd *lcp; + unsigned pr; { register struct socket *so = lcp -> lcd_so; @@ -750,9 +775,9 @@ unsigned pr; * This procedure decodes the X.25 level 3 packet returning a * code to be used in switchs or arrays. */ - +int pk_decode (xp) -register struct x25_packet *xp; + register struct x25_packet *xp; { register int type; @@ -843,10 +868,10 @@ register struct x25_packet *xp; * A restart packet has been received. Print out the reason * for the restart. */ - +void pk_restartcause (pkp, xp) -struct pkcb *pkp; -register struct x25_packet *xp; + struct pkcb *pkp; + register struct x25_packet *xp; { register struct x25config *xcp = pkp -> pk_xcp; register int lcn = LCN(xp); @@ -878,10 +903,10 @@ int Reset_cause[] = { /* * A reset packet has arrived. Return the cause to the user. */ - +void pk_resetcause (pkp, xp) -struct pkcb *pkp; -register struct x25_packet *xp; + struct pkcb *pkp; + register struct x25_packet *xp; { register struct pklcd *lcp = pkp -> pk_chan[LCN(xp)]; @@ -890,8 +915,9 @@ register struct x25_packet *xp; if (code > MAXRESETCAUSE) code = 7; /* EXRNCG */ - pk_message(LCN(xp), lcp -> lcd_pkp, "reset code 0x%x, diagnostic 0x%x", - xp -> packet_data, 4[(u_char *)xp]); + pk_message(LCN(xp), (struct x25config *)lcp -> lcd_pkp, + "reset code 0x%x, diagnostic 0x%x", + xp -> packet_data, 4[(u_char *)xp]); if (lcp -> lcd_so) lcp -> lcd_so -> so_error = Reset_cause[code]; @@ -908,10 +934,10 @@ int Clear_cause[] = { /* * A clear packet has arrived. Return the cause to the user. */ - +void pk_clearcause (pkp, xp) -struct pkcb *pkp; -register struct x25_packet *xp; + struct pkcb *pkp; + register struct x25_packet *xp; { register struct pklcd *lcp = pkp -> pk_chan[LCN(xp)]; @@ -932,10 +958,11 @@ register struct x25config *xcp; } /* VARARGS1 */ -pk_message (lcn, xcp, fmt, a1, a2, a3, a4, a5, a6) -struct x25config *xcp; -char *fmt; +void +pk_message (int lcn, struct x25config *xcp, const char *fmt, ...) { + va_list args; + va_start(args, fmt); if (lcn) if (pkcbhead -> pk_next) @@ -948,13 +975,17 @@ char *fmt; else printf ("X.25: "); - printf (fmt, a1, a2, a3, a4, a5, a6); - printf ("\n"); + printf ("%r\n", fmt, args); + va_end(args); } +int pk_fragment (lcp, m0, qbit, mbit, wait) -struct mbuf *m0; -register struct pklcd *lcp; + register struct pklcd *lcp; + struct mbuf *m0; + int qbit; + int mbit; + int wait; { register struct mbuf *m = m0; register struct x25_packet *xp; @@ -1013,61 +1044,3 @@ abort: return ENOBUFS; } -struct mbuf * -m_split (m0, len0, wait) -register struct mbuf *m0; -int len0; -{ - register struct mbuf *m, *n; - unsigned len = len0, remain; - - for (m = m0; m && len > m -> m_len; m = m -> m_next) - len -= m -> m_len; - if (m == 0) - return (0); - remain = m -> m_len - len; - if (m0 -> m_flags & M_PKTHDR) { - MGETHDR(n, wait, m0 -> m_type); - if (n == 0) - return (0); - n -> m_pkthdr.rcvif = m0 -> m_pkthdr.rcvif; - n -> m_pkthdr.len = m0 -> m_pkthdr.len - len0; - m0 -> m_pkthdr.len = len0; - if (m -> m_flags & M_EXT) - goto extpacket; - if (remain > MHLEN) { - /* m can't be the lead packet */ - MH_ALIGN(n, 0); - n -> m_next = m_split (m, len, wait); - if (n -> m_next == 0) { - (void) m_free (n); - return (0); - } else - return (n); - } else - MH_ALIGN(n, remain); - } else if (remain == 0) { - n = m -> m_next; - m -> m_next = 0; - return (n); - } else { - MGET(n, wait, m -> m_type); - if (n == 0) - return (0); - M_ALIGN(n, remain); - } -extpacket: - if (m -> m_flags & M_EXT) { - n -> m_flags |= M_EXT; - n -> m_ext = m -> m_ext; - mclrefcnt[mtocl (m -> m_ext.ext_buf)]++; - n -> m_data = m -> m_data + len; - } else { - bcopy (mtod (m, caddr_t) + len, mtod (n, caddr_t), remain); - } - n -> m_len = remain; - m -> m_len = len; - n -> m_next = m -> m_next; - m -> m_next = 0; - return (n); -} diff --git a/sys/netccitt/pk_timer.c b/sys/netccitt/pk_timer.c index 34a3a73407d7..e90f7b235a31 100644 --- a/sys/netccitt/pk_timer.c +++ b/sys/netccitt/pk_timer.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_timer.c 7.5 (Berkeley) 5/29/91 - * $Id: pk_timer.c,v 1.2 1993/10/16 19:46:55 rgrimes Exp $ + * $Id: pk_timer.c,v 1.4 1993/12/19 00:52:23 wollman Exp $ */ #include "param.h" @@ -60,9 +60,10 @@ int pk_t20 = 18 * PR_SLOWHZ; /* restart timer */ int pk_t21 = 20 * PR_SLOWHZ; /* call timer */ /* XXX pk_t22 is never used */ -int pk_t22 = 18 * PR_SLOWHZ; /* reset timer */ +/*int pk_t22 = 18 * PR_SLOWHZ;*/ /* reset timer */ int pk_t23 = 18 * PR_SLOWHZ; /* clear timer */ +void pk_timer () { register struct pkcb *pkp; diff --git a/sys/netccitt/pk_usrreq.c b/sys/netccitt/pk_usrreq.c index 335364192fdd..3d9d0d322114 100644 --- a/sys/netccitt/pk_usrreq.c +++ b/sys/netccitt/pk_usrreq.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)pk_usrreq.c 7.16 (Berkeley) 6/27/91 - * $Id: pk_usrreq.c,v 1.3 1993/10/16 19:46:56 rgrimes Exp $ + * $Id: pk_usrreq.c,v 1.5 1993/12/19 00:52:23 wollman Exp $ */ #include "param.h" @@ -60,10 +60,10 @@ * forward references */ -static +static void old_to_new (struct mbuf *m); -static +static void new_to_old (struct mbuf *m); /* @@ -77,11 +77,12 @@ new_to_old (struct mbuf *m); * */ +int pk_usrreq (so, req, m, nam, control) -struct socket *so; -int req; -register struct mbuf *m, *nam; -struct mbuf *control; + struct socket *so; + int req; + register struct mbuf *m, *nam; + struct mbuf *control; { register struct pklcd *lcp = (struct pklcd *) so -> so_pcb; register int error = 0; @@ -305,12 +306,12 @@ release: * other X.25 level 2 driver, have the ifp -> if_ioctl routine * assign pk_start to ia -> ia_start when called with SIOCSIFCONF_X25. */ -/* ARGSUSED */ +int pk_start (lcp) -register struct pklcd *lcp; + register struct pklcd *lcp; { - pk_output (lcp); - return (0); /* XXX pk_output should return a value */ + pk_output (lcp, 0); + return 0; } #ifndef _offsetof @@ -321,17 +322,18 @@ _offsetof(struct sockaddr_x25, x25_addr[0]), 0, -1}; /*ARGSUSED*/ +int pk_control (so, cmd, data, ifp) -struct socket *so; -int cmd; -caddr_t data; -register struct ifnet *ifp; + struct socket *so; + int cmd; + caddr_t data; + register struct ifnet *ifp; { register struct ifreq_x25 *ifr = (struct ifreq_x25 *)data; register struct ifaddr *ifa = 0; register struct x25_ifaddr *ia = 0; struct pklcd *dev_lcp = 0; - int error, s, old_maxlcn; + int error = 0, s, old_maxlcn; unsigned n; /* @@ -396,7 +398,8 @@ register struct ifnet *ifp; ia -> ia_start = pk_start; s = splimp(); if (ifp -> if_ioctl) - error = (*ifp -> if_ioctl)(ifp, SIOCSIFCONF_X25, ifa); + error = (*ifp -> if_ioctl)(ifp, SIOCSIFCONF_X25, + (caddr_t)ifa); if (error) ifp -> if_flags &= ~IFF_UP; else @@ -411,10 +414,11 @@ register struct ifnet *ifp; } } +int pk_ctloutput (cmd, so, level, optname, mp) -struct socket *so; -struct mbuf **mp; -int cmd, level, optname; + struct socket *so; + struct mbuf **mp; + int cmd, level, optname; { register struct mbuf *m = *mp; register struct pklcd *lcp = (struct pklcd *) so -> so_pcb; @@ -460,9 +464,9 @@ int cmd, level, optname; * socket address to the new style */ -static +static void old_to_new (m) -register struct mbuf *m; + register struct mbuf *m; { register struct x25_sockaddr *oldp; register struct sockaddr_x25 *newp; @@ -502,9 +506,9 @@ register struct mbuf *m; * socket address to the old style */ -static +static void new_to_old (m) -register struct mbuf *m; + register struct mbuf *m; { register struct x25_sockaddr *oldp; register struct sockaddr_x25 *newp; @@ -534,9 +538,9 @@ register struct mbuf *m; m -> m_len = sizeof (*oldp); } - +int pk_checksockaddr (m) -struct mbuf *m; + struct mbuf *m; { register struct sockaddr_x25 *sa = mtod (m, struct sockaddr_x25 *); register char *cp; @@ -554,9 +558,10 @@ struct mbuf *m; return (0); } +int pk_send (lcp, m) -struct pklcd *lcp; -register struct mbuf *m; + struct pklcd *lcp; + register struct mbuf *m; { int mqbit = 0, error = 0; register struct x25_packet *xp; diff --git a/sys/netccitt/pk_var.h b/sys/netccitt/pk_var.h index 4d17981faf2a..771b6f081326 100644 --- a/sys/netccitt/pk_var.h +++ b/sys/netccitt/pk_var.h @@ -36,10 +36,13 @@ * SUCH DAMAGE. * * from: @(#)pk_var.h 7.11 (Berkeley) 5/29/91 - * $Id: pk_var.h,v 1.2 1993/10/16 19:46:58 rgrimes Exp $ + * $Id: pk_var.h,v 1.5 1993/12/19 00:52:25 wollman Exp $ */ +#ifndef _NETCCITT_PK_VAR_H_ +#define _NETCCITT_PK_VAR_H_ 1 + /* * * X.25 Logical Channel Descriptor @@ -51,7 +54,8 @@ struct pklcd { struct pklcd_q *q_forw; /* debugging chain */ struct pklcd_q *q_back; /* debugging chain */ } lcd_q; - int (*lcd_upper)(); /* switch to socket vs datagram vs ...*/ + void (*lcd_upper)(struct pklcd *, struct mbuf *); + /* switch to socket vs datagram vs ...*/ caddr_t lcd_upnext; /* reference for lcd_upper() */ int (*lcd_send)(); /* if X.25 front end, direct connect */ caddr_t lcd_downnext; /* reference for lcd_send() */ @@ -121,7 +125,7 @@ struct x25_ifaddr { #define ia_flags ia_ifa.ifa_flags struct x25config ia_xc; /* network specific configuration */ #define ia_maxlcn ia_xc.xc_maxlcn - int (*ia_start) (); /* connect, confirm method */ + int (*ia_start) (struct pklcd *); /* connect, confirm method */ struct sockaddr_x25 ia_dstaddr; /* reserve space for route dst */ }; @@ -168,8 +172,77 @@ struct mbuf_cache { #if defined(KERNEL) && defined(CCITT) struct pkcb *pkcbhead; /* head of linked list of networks */ struct pklcd *pk_listenhead; -struct pklcd *pk_attach(); -extern char *pk_name[], *pk_state[]; -int pk_t20, pk_t21, pk_t22, pk_t23; +struct sockaddr_in; +struct sockaddr_x25; + +extern void x25_connect_callback(struct pklcd *, struct mbuf *); +extern void x25_rtrequest(int, struct rtentry *, struct sockaddr *); +extern void x25_rtinvert(int, struct sockaddr *, struct rtentry *); +extern void x25_ddnip_to_ccitt(struct sockaddr_in *, struct rtentry *); +extern void x25_rtattach(struct pklcd *, struct rtentry *); + +/* From pk_subr.c: */ +extern struct pklcd *pk_attach(struct socket *); +extern void pk_disconnect(struct pklcd *); +extern void pk_close(struct pklcd *); +extern struct mbuf *pk_template(int, int); +extern void pk_restart(struct pkcb *, int); +extern void pk_freelcd(struct pklcd *); +extern int pk_bind(struct pklcd *, struct mbuf *); +extern int pk_listen(struct pklcd *); +extern int pk_protolisten(int, int, void (*)(/* XXX */)); +extern void pk_assoc(struct pkcb *, struct pklcd *, struct sockaddr_x25 *); +extern int pk_connect(struct pklcd *, struct sockaddr_x25 *); +extern void pk_callrequest(struct pklcd *, struct sockaddr_x25 *, struct x25config *); +extern void pk_build_facilities(struct mbuf *, struct sockaddr_x25 *, int); +extern int pk_getlcn(struct pkcb *); +extern void pk_clear(struct pklcd *, int, int); +extern void pk_flowcontrol(struct pklcd *, int, int); +extern void pk_flush(struct pklcd *); +extern void pk_procerror(int, struct pklcd *, const char *, int); +extern int pk_ack(struct pklcd *, unsigned); +extern int pk_decode(struct x25_packet *); +extern void pk_restartcause(struct pkcb *, struct x25_packet *); +extern void pk_resetcause(struct pkcb *, struct x25_packet *); +extern void pk_clearcause(struct pkcb *, struct x25_packet *); +extern void pk_message(int, struct x25config *, const char *, ...); +extern int pk_fragment(struct pklcd *, struct mbuf *, int, int, int); + +/* From pk_input.c: */ +extern struct pkcb *pk_newlink(struct x25_ifaddr *, caddr_t); +extern int pk_resize(struct pkcb *); +extern int /*void*/ pk_ctlinput(int, struct pkcb *); +extern struct ifqueue pkintrq; +extern void pkintr(void); /* called from locore */ +extern void pk_input(struct mbuf *); +extern void pk_incoming_call(struct pkcb *, struct mbuf *); +extern void pk_call_accepted(struct pklcd *, struct mbuf *); +extern void pk_parse_facilities(octet *, struct sockaddr_x25 *); + +/* From pk_output.c: */ +extern int pk_output(struct pklcd *, struct mbuf *); + +/* From pk_acct.c: */ +extern int pk_accton(char *); +extern void pk_acct(struct pklcd *); + +/* From pk_debug.c: */ +extern const char *const pk_name[], *const pk_state[]; +extern void pk_trace(struct x25config *, struct mbuf *, const char *); +extern void mbuf_cache(struct mbuf_cache *, struct mbuf *); + +/* From pk_timer.c: */ +extern int pk_t20, pk_t21, pk_t23; +extern void pk_timer(void); + +/* From pk_usrreq.c: */ +extern int pk_usrreq(struct socket *, int, struct mbuf *, struct mbuf *, struct mbuf *); +extern int pk_start(struct pklcd *); +extern int pk_control(struct socket *, int, caddr_t, struct ifnet *); +extern int pk_ctloutput(int, struct socket *, int, int, struct mbuf **); +extern int pk_checksockaddr(struct mbuf *); +extern int pk_send(struct pklcd *, struct mbuf *); + #endif +#endif /* _NETCCITT_PK_VAR_H_ */ diff --git a/sys/netccitt/x25.h b/sys/netccitt/x25.h index 34eddbac0d4f..560587f496d1 100644 --- a/sys/netccitt/x25.h +++ b/sys/netccitt/x25.h @@ -36,9 +36,12 @@ * SUCH DAMAGE. * * from: @(#)x25.h 7.8 (Berkeley) 5/29/91 - * $Id: x25.h,v 1.2 1993/10/16 19:47:00 rgrimes Exp $ + * $Id: x25.h,v 1.3 1993/11/07 17:47:28 wollman Exp $ */ +#ifndef _NETCCITT_X25_H_ +#define _NETCCITT_X25_H_ 1 + #ifdef KERNEL #define PRC_IFUP 3 #define PRC_LINKUP 4 @@ -151,3 +154,4 @@ struct ifreq_x25 { #define SIOCSIFCONF_X25 _IOW('i', 12, struct ifreq_x25) /* set ifnet config */ #define SIOCGIFCONF_X25 _IOWR('i',13, struct ifreq_x25) /* get ifnet config */ #endif +#endif /* _NETCCITT_X25_H_ */ diff --git a/sys/netccitt/x25_sockaddr.h b/sys/netccitt/x25_sockaddr.h deleted file mode 120000 index 7fab11912607..000000000000 --- a/sys/netccitt/x25_sockaddr.h +++ /dev/null @@ -1 +0,0 @@ -x25.h
\ No newline at end of file diff --git a/sys/netccitt/x25acct.h b/sys/netccitt/x25acct.h index 2084bdc76c45..c166d39107fb 100644 --- a/sys/netccitt/x25acct.h +++ b/sys/netccitt/x25acct.h @@ -36,9 +36,12 @@ * SUCH DAMAGE. * * from: @(#)x25acct.h 7.2 (Berkeley) 5/11/90 - * $Id: x25acct.h,v 1.2 1993/10/16 19:47:01 rgrimes Exp $ + * $Id: x25acct.h,v 1.3 1993/11/07 17:47:30 wollman Exp $ */ +#ifndef _NETCCITT_X25ACCT_H_ +#define _NETCCITT_X25ACCT_H_ 1 + /* * Format of X.25 accounting record written * to X25ACCTF whenever a circuit is closed. @@ -69,3 +72,4 @@ struct x25acct { long x25acct_txcnt; /* packets transmitted */ long x25acct_rxcnt; /* packets received */ }; +#endif /* _NETCCITT_X25ACCT_H_ */ diff --git a/sys/netccitt/x25err.h b/sys/netccitt/x25err.h index a52cb4353e2b..69095d96faa3 100644 --- a/sys/netccitt/x25err.h +++ b/sys/netccitt/x25err.h @@ -36,9 +36,12 @@ * SUCH DAMAGE. * * from: @(#)x25err.h 7.2 (Berkeley) 5/11/90 - * $Id: x25err.h,v 1.2 1993/10/16 19:47:02 rgrimes Exp $ + * $Id: x25err.h,v 1.3 1993/11/07 17:47:31 wollman Exp $ */ +#ifndef _NETCCITT_X25ERR_H_ +#define _NETCCITT_X25ERR_H_ 1 + /* * * X.25 Reset and Clear errors and diagnostics. These values are @@ -63,3 +66,4 @@ #define EXCNCG 118 /* Clear: network congestion */ #define EXCNOB 119 /* Clear: not obtainable */ +#endif /* _NETCCITT_X25ERR_H_ */ |
