make changes for SNMP
authorKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Fri, 22 Sep 1989 15:15:43 +0000 (07:15 -0800)
committerKeith Sklower <sklower@ucbvax.Berkeley.EDU>
Fri, 22 Sep 1989 15:15:43 +0000 (07:15 -0800)
SCCS-vsn: sys/netiso/clnp.h 7.5
SCCS-vsn: sys/netiso/clnp_er.c 7.5
SCCS-vsn: sys/netiso/clnp_frag.c 7.6
SCCS-vsn: sys/netiso/clnp_input.c 7.7
SCCS-vsn: sys/netiso/clnp_output.c 7.5
SCCS-vsn: sys/netiso/clnp_raw.c 7.5
SCCS-vsn: sys/netiso/clnp_stat.h 7.3
SCCS-vsn: sys/netiso/clnp_timer.c 7.4
SCCS-vsn: sys/netiso/if_eon.c 7.5

usr/src/sys/netiso/clnp.h
usr/src/sys/netiso/clnp_er.c
usr/src/sys/netiso/clnp_frag.c
usr/src/sys/netiso/clnp_input.c
usr/src/sys/netiso/clnp_output.c
usr/src/sys/netiso/clnp_raw.c
usr/src/sys/netiso/clnp_stat.h
usr/src/sys/netiso/clnp_timer.c
usr/src/sys/netiso/if_eon.c

index 84a7e43..38113fa 100644 (file)
@@ -1,3 +1,4 @@
+
 /***********************************************************
                Copyright IBM Corporation 1987
 
 /***********************************************************
                Copyright IBM Corporation 1987
 
@@ -26,7 +27,7 @@ SOFTWARE.
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp.h,v 5.1 89/02/09 16:17:22 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp.h,v $ */
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp.h,v 5.1 89/02/09 16:17:22 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp.h,v $ */
-/*     @(#)clnp.h      7.4 (Berkeley) %G% */
+/*     @(#)clnp.h      7.5 (Berkeley) %G% */
 
 #ifndef BYTE_ORDER
 /*
 
 #ifndef BYTE_ORDER
 /*
@@ -324,6 +325,23 @@ struct clnp_optidx {
 
 /* reassembly */
 #define REASS_INTERFERE                0xc0    /* reassembly interference */
 
 /* reassembly */
 #define REASS_INTERFERE                0xc0    /* reassembly interference */
+#define CLNP_ERRORS            22
+
+
+#ifdef KERNEL
+int clnp_er_index();
+#endif
+
+#ifdef CLNP_ER_CODES
+u_char clnp_er_codes[CLNP_ERRORS] =  {
+GEN_NOREAS, GEN_PROTOERR, GEN_BADCSUM, GEN_CONGEST,
+GEN_HDRSYNTAX, GEN_SEGNEEDED, GEN_INCOMPLETE, GEN_DUPOPT,
+ADDR_DESTUNREACH, ADDR_DESTUNKNOWN,
+SRCRT_UNSPECERR, SRCRT_SYNTAX, SRCRT_UNKNOWNADDR, SRCRT_BADPATH,
+TTL_EXPTRANSIT, TTL_EXPREASS,
+DISC_UNSUPPOPT, DISC_UNSUPPVERS, DISC_UNSUPPSECURE,
+DISC_UNSUPPSRCRT, DISC_UNSUPPRECRT, REASS_INTERFERE };
+#endif
 
 #ifdef TROLL
 
 
 #ifdef TROLL
 
index 41641a1..6265cba 100644 (file)
@@ -26,15 +26,12 @@ SOFTWARE.
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_er.c,v 5.1 89/02/09 16:20:18 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_er.c,v $ */
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_er.c,v 5.1 89/02/09 16:20:18 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_er.c,v $ */
-/*     @(#)clnp_er.c   7.4 (Berkeley) %G% */
+/*     @(#)clnp_er.c   7.5 (Berkeley) %G% */
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_er.c,v 5.1 89/02/09 16:20:18 hagens Exp $";
 #endif lint
 
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_er.c,v 5.1 89/02/09 16:20:18 hagens Exp $";
 #endif lint
 
-#ifdef ISO
-
-#include "types.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
@@ -49,6 +46,7 @@ static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_er.c,v 5.1 89/02/09
 #include "iso.h"
 #include "iso_var.h"
 #include "iso_pcb.h"
 #include "iso.h"
 #include "iso_var.h"
 #include "iso_pcb.h"
+#define CLNP_ER_CODES
 #include "clnp.h"
 #include "clnp_stat.h"
 #include "argo_debug.h"
 #include "clnp.h"
 #include "clnp_stat.h"
 #include "argo_debug.h"
@@ -87,59 +85,46 @@ u_char                      reason; /* reason code of er */
                        clnp_iso_addrp(src), reason);
        ENDDEBUG
 
                        clnp_iso_addrp(src), reason);
        ENDDEBUG
 
-       INCSTAT(cns_errcvd);
-
+       INCSTAT(cns_er_inhist[clnp_er_index(reason)]);
        switch (reason) {
                case GEN_NOREAS:
                case GEN_PROTOERR:
        switch (reason) {
                case GEN_NOREAS:
                case GEN_PROTOERR:
-                       INCSTAT(er_protoerr);
                        break;
                case GEN_BADCSUM:               
                        cmd = PRC_PARAMPROB;
                        break;
                case GEN_BADCSUM:               
                        cmd = PRC_PARAMPROB;
-                       INCSTAT(er_badcsum);
                        break;
                case GEN_CONGEST:               
                        cmd = PRC_QUENCH;
                        break;
                case GEN_CONGEST:               
                        cmd = PRC_QUENCH;
-                       INCSTAT(er_congest);
                        break;
                case GEN_HDRSYNTAX:             
                        cmd = PRC_PARAMPROB;
                        break;
                case GEN_HDRSYNTAX:             
                        cmd = PRC_PARAMPROB;
-                       INCSTAT(er_protoerr);
                        break;
                case GEN_SEGNEEDED:             
                        cmd = PRC_UNREACH_NEEDFRAG; 
                        break;
                case GEN_SEGNEEDED:             
                        cmd = PRC_UNREACH_NEEDFRAG; 
-                       INCSTAT(er_segneeded);
                        break;
                case GEN_INCOMPLETE:    
                        cmd = PRC_PARAMPROB;            
                        break;
                case GEN_INCOMPLETE:    
                        cmd = PRC_PARAMPROB;            
-                       INCSTAT(er_reassfail);
                        break;
                case GEN_DUPOPT:                
                        cmd = PRC_PARAMPROB;            
                        break;
                case GEN_DUPOPT:                
                        cmd = PRC_PARAMPROB;            
-                       INCSTAT(er_protoerr);
                        break;
                case ADDR_DESTUNREACH:  
                        cmd = PRC_UNREACH_HOST;         
                        break;
                case ADDR_DESTUNREACH:  
                        cmd = PRC_UNREACH_HOST;         
-                       INCSTAT(er_dstunreach);
                        break;
                case ADDR_DESTUNKNOWN:  
                        cmd = PRC_UNREACH_PROTOCOL; 
                        break;
                case ADDR_DESTUNKNOWN:  
                        cmd = PRC_UNREACH_PROTOCOL; 
-                       INCSTAT(er_dstunreach);
                        break;
                case SRCRT_UNSPECERR:
                case SRCRT_SYNTAX:
                case SRCRT_UNKNOWNADDR:
                case SRCRT_BADPATH:
                        cmd = PRC_UNREACH_SRCFAIL;
                        break;
                case SRCRT_UNSPECERR:
                case SRCRT_SYNTAX:
                case SRCRT_UNKNOWNADDR:
                case SRCRT_BADPATH:
                        cmd = PRC_UNREACH_SRCFAIL;
-                       INCSTAT(er_srcrterr);
                        break;
                case TTL_EXPTRANSIT:    
                        cmd = PRC_TIMXCEED_INTRANS;     
                        break;
                case TTL_EXPTRANSIT:    
                        cmd = PRC_TIMXCEED_INTRANS;     
-                       INCSTAT(er_ttlexpired);
                        break;
                case TTL_EXPREASS:              
                        cmd = PRC_TIMXCEED_REASS;       
                        break;
                case TTL_EXPREASS:              
                        cmd = PRC_TIMXCEED_REASS;       
-                       INCSTAT(er_ttlexpired);
                        break;
                case DISC_UNSUPPOPT:
                case DISC_UNSUPPVERS:
                        break;
                case DISC_UNSUPPOPT:
                case DISC_UNSUPPVERS:
@@ -147,11 +132,9 @@ u_char                     reason; /* reason code of er */
                case DISC_UNSUPPSRCRT:
                case DISC_UNSUPPRECRT:
                        cmd = PRC_PARAMPROB; 
                case DISC_UNSUPPSRCRT:
                case DISC_UNSUPPRECRT:
                        cmd = PRC_PARAMPROB; 
-                       INCSTAT(er_unsupported); 
                        break;
                case REASS_INTERFERE:   
                        cmd = PRC_TIMXCEED_REASS;
                        break;
                case REASS_INTERFERE:   
                        cmd = PRC_TIMXCEED_REASS;
-                       INCSTAT(er_reassfail);
                        break;
        }
 
                        break;
        }
 
@@ -336,6 +319,7 @@ char                                        reason; /* reason for discard */
                m_adj(m0, -(total_len - ifp->if_mtu));
        
        /* send packet */
                m_adj(m0, -(total_len - ifp->if_mtu));
        
        /* send packet */
+       INCSTAT(cns_er_outhist[clnp_er_index(reason)]);
        (void) (*ifp->if_output)(ifp, m0, first_hop);
        goto done;
 
        (void) (*ifp->if_output)(ifp, m0, first_hop);
        goto done;
 
@@ -347,4 +331,15 @@ done:
        if (route.ro_rt != NULL)
                RTFREE(route.ro_rt);
 }
        if (route.ro_rt != NULL)
                RTFREE(route.ro_rt);
 }
-#endif ISO
+
+clnp_er_index(p)
+u_char p;
+{
+       register u_char *cp = clnp_er_codes + CLNP_ERRORS;
+       while (cp > clnp_er_codes) {
+               cp--;
+               if (*cp == p)
+                       return (cp - clnp_er_codes);
+       }
+       return (CLNP_ERRORS + 1);
+}
index 64c0b8f..717ffa8 100644 (file)
@@ -26,15 +26,12 @@ SOFTWARE.
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_frag.c,v 5.1 89/02/09 16:20:26 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_frag.c,v $ */
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_frag.c,v 5.1 89/02/09 16:20:26 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_frag.c,v $ */
-/*     @(#)clnp_frag.c 7.5 (Berkeley) %G% */
+/*     @(#)clnp_frag.c 7.6 (Berkeley) %G% */
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_frag.c,v 5.1 89/02/09 16:20:26 hagens Exp $";
 #endif lint
 
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_frag.c,v 5.1 89/02/09 16:20:26 hagens Exp $";
 #endif lint
 
-#ifdef ISO
-
-#include "types.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
@@ -97,7 +94,7 @@ int                           flags;          /* flags passed to clnp_output */
                extern int                      clnp_id;                        /* id of datagram */
                int                                     error = 0;
 
                extern int                      clnp_id;                        /* id of datagram */
                int                                     error = 0;
 
-               INCSTAT(cns_frag);
+               INCSTAT(cns_fragmented);
 
                seg_part.cng_id = clnp_id++;
                seg_part.cng_off = 0;
 
                seg_part.cng_id = clnp_id++;
                seg_part.cng_off = 0;
@@ -169,6 +166,7 @@ int                         flags;          /* flags passed to clnp_output */
                                        m_freem(frag_hdr);
                                        return(ENOBUFS);
                                }
                                        m_freem(frag_hdr);
                                        return(ENOBUFS);
                                }
+                               INCSTAT(cns_fragments);
                        }
                        clnp = mtod(frag_hdr, struct clnp_fixed *);
 
                        }
                        clnp = mtod(frag_hdr, struct clnp_fixed *);
 
@@ -262,6 +260,7 @@ int                         flags;          /* flags passed to clnp_output */
                }
                return(0);
        } else {
                }
                return(0);
        } else {
+               INCSTAT(cns_cantfrag);
                clnp_discard(m, GEN_SEGNEEDED);
                return(EMSGSIZE);
        }
                clnp_discard(m, GEN_SEGNEEDED);
                return(EMSGSIZE);
        }
@@ -324,6 +323,7 @@ struct clnp_segment *seg;   /* segment part of fragment header */
         */
        /* TODO: don't let one src hog all the reassembly buffers */
        if (!clnp_newpkt(m, src, dst, seg) /* || this src is a hog */) {
         */
        /* TODO: don't let one src hog all the reassembly buffers */
        if (!clnp_newpkt(m, src, dst, seg) /* || this src is a hog */) {
+               INCSTAT(cns_fragdropped);
                clnp_discard(m, GEN_CONGEST);
        }
 
                clnp_discard(m, GEN_CONGEST);
        }
 
@@ -816,4 +816,3 @@ struct sockaddr     *dst;
 }
 
 #endif TROLL
 }
 
 #endif TROLL
-#endif ISO
index 60e9239..7b67b97 100644 (file)
@@ -26,7 +26,7 @@ SOFTWARE.
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_input.c,v 5.1 89/02/09 16:20:32 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_input.c,v $ */
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_input.c,v 5.1 89/02/09 16:20:32 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_input.c,v $ */
-/*     @(#)clnp_input.c        7.6 (Berkeley) %G% */
+/*     @(#)clnp_input.c        7.7 (Berkeley) %G% */
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_input.c,v 5.1 89/02/09 16:20:32 hagens Exp $";
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_input.c,v 5.1 89/02/09 16:20:32 hagens Exp $";
@@ -43,7 +43,7 @@ static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_input.c,v 5.1 89/02/
 #include "time.h"
 
 #include "../net/if.h"
 #include "time.h"
 
 #include "../net/if.h"
-#include "../net/iftypes.h"
+#include "../net/if_types.h"
 #include "../net/route.h"
 
 #include "iso.h"
 #include "../net/route.h"
 
 #include "iso.h"
@@ -447,6 +447,7 @@ struct snpa_hdr     *shp;   /* subnetwork header */
                if ((m0 = clnp_reass(m, &src, &dst, &seg_part)) != NULL) {
                        m = m0;
                        clnp = mtod(m, struct clnp_fixed *);
                if ((m0 = clnp_reass(m, &src, &dst, &seg_part)) != NULL) {
                        m = m0;
                        clnp = mtod(m, struct clnp_fixed *);
+                       INCSTAT(cns_reassembled);
                } else {
                        return;
                }
                } else {
                        return;
                }
@@ -460,6 +461,7 @@ struct snpa_hdr     *shp;   /* subnetwork header */
         *      or, if absent, the segment length field of the
         *      header.
         */
         *      or, if absent, the segment length field of the
         *      header.
         */
+       INCSTAT(cns_delivered);
        switch (clnp->cnf_type & CNF_TYPE) {
        case CLNP_ER:
                /*
        switch (clnp->cnf_type & CNF_TYPE) {
        case CLNP_ER:
                /*
@@ -519,6 +521,8 @@ struct snpa_hdr     *shp;   /* subnetwork header */
        default:
                printf("clnp_input: unknown clnp pkt type %d\n",
                        clnp->cnf_type & CNF_TYPE);
        default:
                printf("clnp_input: unknown clnp pkt type %d\n",
                        clnp->cnf_type & CNF_TYPE);
+               clnp_stat.cns_delivered--;
+               clnp_stat.cns_noproto++;
                clnp_discard(m, GEN_HDRSYNTAX);
                break;
        }
                clnp_discard(m, GEN_HDRSYNTAX);
                break;
        }
index 6d3294d..b8c8730 100644 (file)
@@ -26,14 +26,12 @@ SOFTWARE.
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_output.c,v 5.0 89/02/08 12:00:15 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_output.c,v $ */
  */
 /* $Header: /var/src/sys/netiso/RCS/clnp_output.c,v 5.0 89/02/08 12:00:15 hagens Exp $ */
 /* $Source: /var/src/sys/netiso/RCS/clnp_output.c,v $ */
-/*     @(#)clnp_output.c       7.4 (Berkeley) %G% */
+/*     @(#)clnp_output.c       7.5 (Berkeley) %G% */
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_output.c,v 5.0 89/02/08 12:00:15 hagens Exp $";
 #endif lint
 
 
 #ifndef lint
 static char *rcsid = "$Header: /var/src/sys/netiso/RCS/clnp_output.c,v 5.0 89/02/08 12:00:15 hagens Exp $";
 #endif lint
 
-#ifdef ISO
-#include "types.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
@@ -297,6 +295,7 @@ int                                 flags;          /* flags */
                        IFDEBUG(D_OUTPUT)
                                printf("clnp_output: packet dropped - flags unsupported\n");
                        ENDDEBUG
                        IFDEBUG(D_OUTPUT)
                                printf("clnp_output: packet dropped - flags unsupported\n");
                        ENDDEBUG
+                       INCSTAT(cns_odropped);
                        m_freem(m0);
                        return(EINVAL);
                }
                        m_freem(m0);
                        return(EINVAL);
                }
@@ -309,6 +308,7 @@ int                                 flags;          /* flags */
                        (dst->isoa_len == 0) ||
                        (dst->isoa_len > sizeof(struct iso_addr))) {
                        m_freem(m0);
                        (dst->isoa_len == 0) ||
                        (dst->isoa_len > sizeof(struct iso_addr))) {
                        m_freem(m0);
+                       INCSTAT(cns_odropped);
                        return(ENAMETOOLONG);
                }
 
                        return(ENAMETOOLONG);
                }
 
@@ -318,9 +318,10 @@ int                                        flags;          /* flags */
                MGETHDR(m, M_DONTWAIT, MT_HEADER);
                if (m == 0) {
                        m_freem(m0);
                MGETHDR(m, M_DONTWAIT, MT_HEADER);
                if (m == 0) {
                        m_freem(m0);
+                       INCSTAT(cns_odropped);
                        return(ENOBUFS);
                }
                        return(ENOBUFS);
                }
-
+               INCSTAT(cns_sent);
                m->m_next = m0;
                clnp = mtod(m, struct clnp_fixed *);
                clcp->clc_segoff = 0;
                m->m_next = m0;
                clnp = mtod(m, struct clnp_fixed *);
                clcp->clc_segoff = 0;
@@ -449,7 +450,6 @@ int                                 flags;          /* flags */
                        }
                }
        }
                        }
                }
        }
-       INCSTAT(cns_sent);
        /*
         *      If small enough for interface, send directly
         *      Fill in segmentation part of hdr if using the full protocol
        /*
         *      If small enough for interface, send directly
         *      Fill in segmentation part of hdr if using the full protocol
@@ -490,19 +490,20 @@ int                                       flags;          /* flags */
                /*
                 * Too large for interface; fragment if possible.
                 */
                /*
                 * Too large for interface; fragment if possible.
                 */
-               error = clnp_fragment(clcp->clc_ifa->ia_ifp, m, clcp->clc_firsthop, total_len, 
-                       clcp->clc_segoff, flags);
+               error = clnp_fragment(clcp->clc_ifa->ia_ifp, m, clcp->clc_firsthop,
+                                                                       total_len, clcp->clc_segoff, flags);
                goto done;
        }
 bad:
        m_freem(m);
                goto done;
        }
 bad:
        m_freem(m);
-
 done:
 done:
-       return(error);
+       if (error) {
+               clnp_stat.cns_sent--;
+               clnp_stat.cns_odropped++;
+       }
+       return (error);
 }
 
 int clnp_ctloutput()
 {
 }
 }
 
 int clnp_ctloutput()
 {
 }
-
-#endif ISO
index cb4367a..465c855 100644 (file)
@@ -1,4 +1,5 @@
-/*********************************************************** Copyright IBM Corporation 1987
+/***********************************************************
+                               Copyright IBM Corporation 1987
 
                       All Rights Reserved
 
 
                       All Rights Reserved
 
@@ -25,14 +26,11 @@ SOFTWARE.
  */
 /* $Header: clnp_raw.c,v 4.2 88/06/29 14:58:56 hagens Exp $ */
 /* $Source: /usr/argo/sys/netiso/RCS/clnp_raw.c,v $ */
  */
 /* $Header: clnp_raw.c,v 4.2 88/06/29 14:58:56 hagens Exp $ */
 /* $Source: /usr/argo/sys/netiso/RCS/clnp_raw.c,v $ */
-/*     @(#)clnp_raw.c  7.4 (Berkeley) %G% */
+/*     @(#)clnp_raw.c  7.5 (Berkeley) %G% */
 #ifndef lint
 static char *rcsid = "$Header: clnp_raw.c,v 4.2 88/06/29 14:58:56 hagens Exp $";
 #endif lint
 
 #ifndef lint
 static char *rcsid = "$Header: clnp_raw.c,v 4.2 88/06/29 14:58:56 hagens Exp $";
 #endif lint
 
-#ifdef ISO
-
-#include "types.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
@@ -86,8 +84,11 @@ int                                  hdrlen; /* length (in bytes) of clnp header */
 
        rclnp_src.siso_addr = *src;
        rclnp_dst.siso_addr = *dst;
 
        rclnp_src.siso_addr = *src;
        rclnp_dst.siso_addr = *dst;
-       raw_input(m, &rclnp_proto, (struct sockaddr *)&rclnp_src,
-               (struct sockaddr *)&rclnp_dst);
+       if (raw_input(m, &rclnp_proto, (struct sockaddr *)&rclnp_src,
+               (struct sockaddr *)&rclnp_dst) == 0) {
+                       clnp_stat.cns_delivered--;
+                       clnp_stat.cns_noproto++;
+       }
 }
 
 /*
 }
 
 /*
@@ -326,4 +327,3 @@ clnp_usrreq(so, req, m, nam, rights, control)
                free((caddr_t)rp, M_PCB);
        return (error);
 }
                free((caddr_t)rp, M_PCB);
        return (error);
 }
-#endif ISO
index b620c95..5dd2103 100644 (file)
@@ -32,44 +32,32 @@ SOFTWARE.
 #define __CLNP_STAT__
 
 struct clnp_stat {
 #define __CLNP_STAT__
 
 struct clnp_stat {
-       u_short cns_total;                      /* total pkts received */
-       u_short cns_toosmall;           /* fixed part of header too small */
-       u_short cns_badhlen;            /* header length is not reasonable */
-       u_short cns_badcsum;            /* checksum on packet failed */
-       u_short cns_badaddr;            /* address fields were not reasonable */
-       u_short cns_noseg;                      /* segment information forgotten */
-       u_short cns_badid;                      /* incorrect protocol id */
-       u_short cns_badvers;            /* incorrect version */
-       u_short cns_ttlexpired;         /* ttl has expired */
-       u_short cns_forward;            /* forwarded packets */
-       u_short cns_errcvd;                     /* ER packets received */
-       u_short cns_frag;                       /* fragments generated */
-       u_short cns_sent;                       /* total packets sent */
-       u_short cns_cachemiss;          /* cache misses */
-       u_short cns_congest_set;        /* congestion experienced bit set */
-       u_short cns_congest_rcvd;       /* congestion experienced bit received */
-       u_short er_protoerr;            /*      GEN_NOREAS
-                                                                       GEN_PROTOERR
-                                                                       GEN_HDRSYNTAX
-                                                                       GEN_INCOMPLETE
-                                                                       GEN_DUPOPT */
-       u_short er_badcsum;                     /*      GEN_BADCSUM */
-       u_short er_congest;                     /*      GEN_CONGEST */
-       u_short er_segneeded;           /*      GEN_SEGNEEDED */
-       u_short er_reassfail;           /*      REASS_INTERFERE */
-       u_short er_dstunreach;          /*      ADDR_DESTUNREACH
-                                                                       ADDR_DESTUNKNOWN */
-       u_short er_srcrterr;            /*      SRCRT_UNSPECERR
-                                                                       SRCRT_SYNTAX
-                                                                       SRCRT_UNKNOWNADDR
-                                                                       SRCRT_BADPATH */
-       u_short er_ttlexpired;          /*      TTL_EXPTRANSIT
-                                                                       TTL_EXPREASS */
-       u_short er_unsupported;         /*      DISC_UNSUPPOPT
-                                                                       DISC_UNSUPPVERS
-                                                                       DISC_UNSUPPSECURE
-                                                                       DISC_UNSUPPSRCRT
-                                                                       DISC_UNSUPPRECRT */
+       int cns_total;                  /* total pkts received */
+       int     cns_toosmall;           /* fixed part of header too small */
+       int     cns_badhlen;            /* header length is not reasonable */
+       int     cns_badcsum;            /* checksum on packet failed */
+       int cns_badaddr;                /* address fields were not reasonable */
+       int     cns_badvers;            /* incorrect version */
+       int cns_noseg;                  /* segment information forgotten */
+       int cns_noproto;                /* incorrect protocol id */
+       int     cns_delivered;          /* packets consumed by protocol */
+       int     cns_ttlexpired;         /* ttl has expired */
+       int cns_forward;                /* forwarded packets */
+       int cns_sent;                   /* total packets sent */
+       int cns_odropped;               /* o.k. packets discarded, e.g. ENOBUFS */
+       int cns_cantforward;    /* non-forwarded packets */
+       int cns_fragmented;             /* packets fragmented */
+       int cns_fragments;              /* fragments received */
+       int cns_fragdropped;    /* fragments discarded */
+       int cns_fragtimeout;    /* fragments timed out */
+       int cns_ofragments;             /* fragments generated */
+       int cns_cantfrag;               /* fragmentation prohibited */
+       int cns_reassembled;    /* packets reconstructed */
+       int     cns_cachemiss;          /* cache misses */
+       int cns_congest_set;    /* congestion experienced bit set */
+       int cns_congest_rcvd;   /* congestion experienced bit received */
+       int cns_er_inhist[CLNP_ERRORS + 1];
+       int cns_er_outhist[CLNP_ERRORS + 1];
 } clnp_stat ;
 
 #ifdef INCSTAT
 } clnp_stat ;
 
 #ifdef INCSTAT
index 7fa0bdf..3caa41a 100644 (file)
@@ -26,15 +26,12 @@ SOFTWARE.
  */
 /* $Header: clnp_timer.c,v 4.2 88/06/29 14:59:05 hagens Exp $ */
 /* $Source: /usr/argo/sys/netiso/RCS/clnp_timer.c,v $ */
  */
 /* $Header: clnp_timer.c,v 4.2 88/06/29 14:59:05 hagens Exp $ */
 /* $Source: /usr/argo/sys/netiso/RCS/clnp_timer.c,v $ */
-/*     @(#)clnp_timer.c        7.3 (Berkeley) %G% */
+/*     @(#)clnp_timer.c        7.4 (Berkeley) %G% */
 
 #ifndef lint
 static char *rcsid = "$Header: clnp_timer.c,v 4.2 88/06/29 14:59:05 hagens Exp $";
 #endif lint
 
 
 #ifndef lint
 static char *rcsid = "$Header: clnp_timer.c,v 4.2 88/06/29 14:59:05 hagens Exp $";
 #endif lint
 
-#ifdef ISO
-
-#include "types.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
 #include "param.h"
 #include "mbuf.h"
 #include "domain.h"
@@ -76,11 +73,13 @@ register struct clnp_fragl  *cfh;   /* fragment header to delete */
        cf = cfh->cfl_frags;
        while (cf != NULL) {
                struct clnp_frag        *cf_next = cf->cfr_next;
        cf = cfh->cfl_frags;
        while (cf != NULL) {
                struct clnp_frag        *cf_next = cf->cfr_next;
+               INCSTAT(cns_fragdropped);
                m_freem(cf->cfr_data);
                cf = cf_next;
        }
 
        /* free the copy of the header */
                m_freem(cf->cfr_data);
                cf = cf_next;
        }
 
        /* free the copy of the header */
+       INCSTAT(cns_fragdropped);
        m_freem(cfh->cfl_orighdr);
 
        if (clnp_frags == cfh) {
        m_freem(cfh->cfl_orighdr);
 
        if (clnp_frags == cfh) {
@@ -122,6 +121,7 @@ clnp_slowtimo()
        while (cfh != NULL) {
                if (--cfh->cfl_ttl == 0) {
                        cfh = clnp_freefrags(cfh);
        while (cfh != NULL) {
                if (--cfh->cfl_ttl == 0) {
                        cfh = clnp_freefrags(cfh);
+                       INCSTAT(cns_fragtimeout);
                } else {
                        cfh = cfh->cfl_next;
                }
                } else {
                        cfh = cfh->cfl_next;
                }
@@ -148,5 +148,3 @@ clnp_drain()
        while (cfh != NULL)
                cfh = clnp_freefrags(cfh);
 }
        while (cfh != NULL)
                cfh = clnp_freefrags(cfh);
 }
-
-#endif ISO
index 5b3051a..0115334 100644 (file)
@@ -27,7 +27,7 @@ SOFTWARE.
 /*
  * $Header: if_eon.c,v 1.4 88/07/19 15:53:59 hagens Exp $ 
  * $Source: /usr/argo/sys/netiso/RCS/if_eon.c,v $ 
 /*
  * $Header: if_eon.c,v 1.4 88/07/19 15:53:59 hagens Exp $ 
  * $Source: /usr/argo/sys/netiso/RCS/if_eon.c,v $ 
- *     @(#)if_eon.c    7.4 (Berkeley) %G% *
+ *     @(#)if_eon.c    7.5 (Berkeley) %G% *
  *
  *     EON rfc 
  *  Layer between IP and CLNL
  *
  *     EON rfc 
  *  Layer between IP and CLNL
@@ -57,7 +57,7 @@ static char *rcsid = "$Header: if_eon.c,v 1.4 88/07/19 15:53:59 hagens Exp $";
 #include "types.h"
 
 #include "../net/if.h"
 #include "types.h"
 
 #include "../net/if.h"
-#include "../net/iftypes.h"
+#include "../net/if_types.h"
 #include "../net/netisr.h"
 #include "../net/route.h"
 #include "machine/mtpr.h"
 #include "../net/netisr.h"
 #include "../net/route.h"
 #include "machine/mtpr.h"
@@ -75,6 +75,7 @@ extern struct snpa_cache all_es, all_is;
 #include "argo_debug.h"
 #include "iso_errno.h"
 #include "eonvar.h"
 #include "argo_debug.h"
 #include "iso_errno.h"
 #include "eonvar.h"
+extern struct timeval time;
 
 #define EOK 0
 
 
 #define EOK 0
 
@@ -552,6 +553,8 @@ eonoutput(ifp, morig, dst)
                printf("eonoutput \n" );
        ENDDEBUG
 
                printf("eonoutput \n" );
        ENDDEBUG
 
+       ifp->if_lastchange = time;
+       ifp->if_opackets++;
        if( dst->siso_family != AF_ISO ) {
        einval:
                error =  EINVAL;
        if( dst->siso_family != AF_ISO ) {
        einval:
                error =  EINVAL;
@@ -662,7 +665,8 @@ eonoutput(ifp, morig, dst)
        bzero((caddr_t)iphdr, sizeof (*iphdr));
 
        iphdr->ip_p = IPPROTO_EON;
        bzero((caddr_t)iphdr, sizeof (*iphdr));
 
        iphdr->ip_p = IPPROTO_EON;
-       iphdr->ip_len = (u_short)(mh->m_pkthdr.len = EONIPLEN + datalen);
+       ifp->if_obytes +=
+               (iphdr->ip_len = (u_short)(mh->m_pkthdr.len = EONIPLEN + datalen));
        iphdr->ip_ttl = MAXTTL; 
        iphdr->ip_src.s_addr = INADDR_ANY;
 
        iphdr->ip_ttl = MAXTTL; 
        iphdr->ip_src.s_addr = INADDR_ANY;
 
@@ -744,6 +748,11 @@ done:
 flush:
                m_freem(morig);
        }
 flush:
                m_freem(morig);
        }
+       if (error) {
+               ifp->if_oerrors++;
+               ifp->if_opackets--;
+               ifp->if_obytes -= datalen + EONIPLEN;
+       }
        return error;
 }
 
        return error;
 }
 
@@ -781,6 +790,8 @@ drop:
                        return;
                }
        }
                        return;
                }
        }
+       eonif->if_ibytes += m->m_pkthdr.len;
+       eonif->if_lastchange = time;
        iphdr = mtod(m, struct ip *);
        /* do a few checks for debugging */
        if( iphdr->ip_p != IPPROTO_EON ) {
        iphdr = mtod(m, struct ip *);
        /* do a few checks for debugging */
        if( iphdr->ip_p != IPPROTO_EON ) {
@@ -825,7 +836,7 @@ drop:
                        m->m_flags |= M_MCAST;
                        break;
        }
                        m->m_flags |= M_MCAST;
                        break;
        }
-       eonifp->if_ipackets ++;
+       eonifp->if_ipackets++;
 
        {
                /* put it on the CLNP queue and set soft interrupt */
 
        {
                /* put it on the CLNP queue and set soft interrupt */
@@ -841,7 +852,8 @@ drop:
                if (IF_QFULL(ifq)) {
                        IF_DROP(ifq);
                        m_freem(m);
                if (IF_QFULL(ifq)) {
                        IF_DROP(ifq);
                        m_freem(m);
-                       eonifp->if_ierrors ++;
+                       eonifp->if_iqdrops++;
+                       eonifp->if_ipackets--;
                        splx(s);
                        return;
                }
                        splx(s);
                        return;
                }