Annotation of 43BSDReno/sys/netiso/iso_proto.c, revision 1.1.1.1

1.1       root        1: /***********************************************************
                      2:                Copyright IBM Corporation 1987
                      3: 
                      4:                       All Rights Reserved
                      5: 
                      6: Permission to use, copy, modify, and distribute this software and its 
                      7: documentation for any purpose and without fee is hereby granted, 
                      8: provided that the above copyright notice appear in all copies and that
                      9: both that copyright notice and this permission notice appear in 
                     10: supporting documentation, and that the name of IBM not be
                     11: used in advertising or publicity pertaining to distribution of the
                     12: software without specific, written prior permission.  
                     13: 
                     14: IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     15: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     16: IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     17: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     18: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     19: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     20: SOFTWARE.
                     21: 
                     22: ******************************************************************/
                     23: 
                     24: /*
                     25:  * ARGO Project, Computer Sciences Dept., University of Wisconsin - Madison
                     26:  */
                     27: /* $Header: iso_proto.c,v 4.4 88/09/08 08:38:42 hagens Exp $ 
                     28:  * $Source: /usr/argo/sys/netiso/RCS/iso_proto.c,v $ 
                     29:  *     @(#)iso_proto.c 7.6 (Berkeley) 6/22/90 *
                     30:  *
                     31:  * iso_proto.c : protocol switch tables in the ISO domain
                     32:  *
                     33:  * ISO protocol family includes TP, CLTP, CLNP, 8208
                     34:  * TP and CLNP are implemented here.
                     35:  */
                     36: 
                     37: #ifndef lint
                     38: static char *rcsid = "$Header: iso_proto.c,v 4.4 88/09/08 08:38:42 hagens Exp $";
                     39: #endif
                     40: 
                     41: #ifdef ISO
                     42: #include "types.h"
                     43: #include "param.h"
                     44: #include "socket.h"
                     45: #include "protosw.h"
                     46: #include "domain.h"
                     47: #include "mbuf.h"
                     48: 
                     49: #include "iso.h"
                     50: 
                     51: int clnp_output(), clnp_init(),clnp_slowtimo(),clnp_drain();
                     52: int rclnp_input(), rclnp_output(), rclnp_ctloutput(), raw_usrreq();
                     53: int    clnp_usrreq();
                     54: 
                     55: int    tp_ctloutput();
                     56: int    tpclnp_ctlinput();
                     57: int    tpclnp_input();
                     58: int    tp_usrreq();
                     59: int    tp_init(),tp_slowtimo(),tp_drain();
                     60: 
                     61: int    esis_input(), esis_ctlinput(), esis_init(), esis_usrreq();
                     62: int    cltp_input(), cltp_ctlinput(), cltp_init(), cltp_usrreq(), cltp_output();
                     63: int isis_input();
                     64: 
                     65: struct protosw isosw[] = {
                     66: /*
                     67:  *  We need a datagram entry through which net mgmt programs can get
                     68:  *     to the iso_control procedure (iso ioctls). Thus, a minimal
                     69:  *     SOCK_DGRAM interface is provided here.
                     70:  *  THIS ONE MUST BE FIRST: Kludge city : socket() says if(!proto) call
                     71:  *  pffindtype, which gets the first entry that matches the type.
                     72:  *  sigh.
                     73:  */
                     74: { SOCK_DGRAM,  &isodomain,             ISOPROTO_CLTP,          PR_ATOMIC|PR_ADDR,
                     75:        0,                      cltp_output,    0,                                      0,
                     76:        cltp_usrreq,
                     77:        cltp_init,      0,                              0,                                      0
                     78: },
                     79: 
                     80: /*
                     81:  *     A datagram interface for clnp cannot co-exist with TP/CLNP
                     82:  *  because CLNP has no way to discriminate incoming TP packets from
                     83:  *  packets coming in for any other higher layer protocol.
                     84:  *  Old way: set it up so that pffindproto(... dgm, clnp) fails.
                     85:  *  New way: let pffindproto work (for x.25, thank you) but create
                     86:  *     a clnp_usrreq() that returns error on PRU_ATTACH.
                     87:  */
                     88: {SOCK_DGRAM,   &isodomain,             ISOPROTO_CLNP,          0,
                     89:  0,                            clnp_output,    0,                                      0,
                     90:  clnp_usrreq,
                     91:  clnp_init,            0,                              clnp_slowtimo,          clnp_drain,
                     92: },
                     93: 
                     94: /* raw clnp */
                     95: { SOCK_RAW,            &isodomain,             ISOPROTO_RAW,           PR_ATOMIC|PR_ADDR,
                     96:   rclnp_input, rclnp_output,   0,                                      rclnp_ctloutput,
                     97:   clnp_usrreq,
                     98:   0,                   0,                              0,                                      0
                     99: },
                    100: 
                    101: /* ES-IS protocol */
                    102: { SOCK_DGRAM,  &isodomain,             ISOPROTO_ESIS,          PR_ATOMIC|PR_ADDR,
                    103:   esis_input,  0,                              esis_ctlinput,                          0,
                    104:   esis_usrreq,
                    105:   esis_init,   0,                              0,                                      0
                    106: },
                    107: 
                    108: /* ISOPROTO_INTRAISIS */
                    109: { SOCK_DGRAM,  &isodomain,             ISOPROTO_INTRAISIS,     PR_ATOMIC|PR_ADDR,
                    110:   isis_input,  0,                              0,                                      0,
                    111:   esis_usrreq,
                    112:   0,                   0,                              0,                                      0
                    113: },
                    114: 
                    115: /* ISOPROTO_TP */
                    116: { SOCK_SEQPACKET,      &isodomain,     ISOPROTO_TP,    PR_CONNREQUIRED|PR_WANTRCVD,
                    117:   tpclnp_input,                0,                      tpclnp_ctlinput,        tp_ctloutput,
                    118:   tp_usrreq,
                    119:   tp_init,                     0,                      tp_slowtimo,    tp_drain,
                    120: },
                    121: 
                    122: };
                    123: 
                    124: int    iso_init();
                    125: 
                    126: struct domain isodomain = {
                    127:     AF_ISO,                    /* family */
                    128:        "iso-domain",           /* name */
                    129:        iso_init,                       /* initialize routine */
                    130:        0,                                      /* externalize access rights */
                    131:        0,                                      /* dispose of internalized rights */
                    132:        isosw,                          /* protosw */
                    133:        &isosw[sizeof(isosw)/sizeof(isosw[0])] /* NPROTOSW */
                    134: };
                    135: #endif ISO

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.