projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add ssize_t, required by POSIX 1003.1
[unix-history]
/
usr
/
src
/
sys
/
netiso
/
clnp_er.c
diff --git
a/usr/src/sys/netiso/clnp_er.c
b/usr/src/sys/netiso/clnp_er.c
index
41641a1
..
4b76ae7
100644
(file)
--- a/
usr/src/sys/netiso/clnp_er.c
+++ b/
usr/src/sys/netiso/clnp_er.c
@@
-1,3
+1,12
@@
+/*-
+ * Copyright (c) 1991 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * %sccs.include.redist.c%
+ *
+ * @(#)clnp_er.c 7.7 (Berkeley) %G%
+ */
+
/***********************************************************
Copyright IBM Corporation 1987
/***********************************************************
Copyright IBM Corporation 1987
@@
-26,15
+35,7
@@
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% */
-
-#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
+50,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
+89,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:
break;
case GEN_SEGNEEDED:
- cmd = PRC_UNREACH_NEEDFRAG;
- INCSTAT(er_segneeded);
+ cmd = PRC_MSGSIZE;
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
+136,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,7
+323,8
@@
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 */
- (void) (*ifp->if_output)(ifp, m0, first_hop);
+ INCSTAT(cns_er_outhist[clnp_er_index(reason)]);
+ (void) (*ifp->if_output)(ifp, m0, first_hop, route.ro_rt);
goto done;
bad:
goto done;
bad:
@@
-347,4
+335,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);
+}