mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-18 10:35:55 +00:00
Use ICMP6STAT_INC() macro for ICMPv6 errors accounting.
MFC after: 2 weeks
This commit is contained in:
parent
683f808e34
commit
49dc650cea
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=251995
@ -130,7 +130,7 @@ VNET_DECLARE(int, icmp6_nodeinfo);
|
||||
#define V_icmp6errppslim_last VNET(icmp6errppslim_last)
|
||||
#define V_icmp6_nodeinfo VNET(icmp6_nodeinfo)
|
||||
|
||||
static void icmp6_errcount(struct icmp6errstat *, int, int);
|
||||
static void icmp6_errcount(int, int);
|
||||
static int icmp6_rip6_input(struct mbuf **, int);
|
||||
static int icmp6_ratelimit(const struct in6_addr *, const int, const int);
|
||||
static const char *icmp6_redirect_diag(struct in6_addr *,
|
||||
@ -159,59 +159,59 @@ kmod_icmp6stat_inc(int statnum)
|
||||
}
|
||||
|
||||
static void
|
||||
icmp6_errcount(struct icmp6errstat *stat, int type, int code)
|
||||
icmp6_errcount(int type, int code)
|
||||
{
|
||||
switch (type) {
|
||||
case ICMP6_DST_UNREACH:
|
||||
switch (code) {
|
||||
case ICMP6_DST_UNREACH_NOROUTE:
|
||||
stat->icp6errs_dst_unreach_noroute++;
|
||||
ICMP6STAT_INC(icp6s_odst_unreach_noroute);
|
||||
return;
|
||||
case ICMP6_DST_UNREACH_ADMIN:
|
||||
stat->icp6errs_dst_unreach_admin++;
|
||||
ICMP6STAT_INC(icp6s_odst_unreach_admin);
|
||||
return;
|
||||
case ICMP6_DST_UNREACH_BEYONDSCOPE:
|
||||
stat->icp6errs_dst_unreach_beyondscope++;
|
||||
ICMP6STAT_INC(icp6s_odst_unreach_beyondscope);
|
||||
return;
|
||||
case ICMP6_DST_UNREACH_ADDR:
|
||||
stat->icp6errs_dst_unreach_addr++;
|
||||
ICMP6STAT_INC(icp6s_odst_unreach_addr);
|
||||
return;
|
||||
case ICMP6_DST_UNREACH_NOPORT:
|
||||
stat->icp6errs_dst_unreach_noport++;
|
||||
ICMP6STAT_INC(icp6s_odst_unreach_noport);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ICMP6_PACKET_TOO_BIG:
|
||||
stat->icp6errs_packet_too_big++;
|
||||
ICMP6STAT_INC(icp6s_opacket_too_big);
|
||||
return;
|
||||
case ICMP6_TIME_EXCEEDED:
|
||||
switch (code) {
|
||||
case ICMP6_TIME_EXCEED_TRANSIT:
|
||||
stat->icp6errs_time_exceed_transit++;
|
||||
ICMP6STAT_INC(icp6s_otime_exceed_transit);
|
||||
return;
|
||||
case ICMP6_TIME_EXCEED_REASSEMBLY:
|
||||
stat->icp6errs_time_exceed_reassembly++;
|
||||
ICMP6STAT_INC(icp6s_otime_exceed_reassembly);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ICMP6_PARAM_PROB:
|
||||
switch (code) {
|
||||
case ICMP6_PARAMPROB_HEADER:
|
||||
stat->icp6errs_paramprob_header++;
|
||||
ICMP6STAT_INC(icp6s_oparamprob_header);
|
||||
return;
|
||||
case ICMP6_PARAMPROB_NEXTHEADER:
|
||||
stat->icp6errs_paramprob_nextheader++;
|
||||
ICMP6STAT_INC(icp6s_oparamprob_nextheader);
|
||||
return;
|
||||
case ICMP6_PARAMPROB_OPTION:
|
||||
stat->icp6errs_paramprob_option++;
|
||||
ICMP6STAT_INC(icp6s_oparamprob_option);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case ND_REDIRECT:
|
||||
stat->icp6errs_redirect++;
|
||||
ICMP6STAT_INC(icp6s_oredirect);
|
||||
return;
|
||||
}
|
||||
stat->icp6errs_unknown++;
|
||||
ICMP6STAT_INC(icp6s_ounknown);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -262,7 +262,7 @@ icmp6_error(struct mbuf *m, int type, int code, int param)
|
||||
ICMP6STAT_INC(icp6s_error);
|
||||
|
||||
/* count per-type-code statistics */
|
||||
icmp6_errcount(&V_icmp6stat.icp6s_outerrhist, type, code);
|
||||
icmp6_errcount(type, code);
|
||||
|
||||
#ifdef M_DECRYPTED /*not openbsd*/
|
||||
if (m->m_flags & M_DECRYPTED) {
|
||||
@ -2530,7 +2530,7 @@ icmp6_redirect_output(struct mbuf *m0, struct rtentry *rt)
|
||||
struct ifnet *outif = NULL;
|
||||
struct sockaddr_in6 src_sa;
|
||||
|
||||
icmp6_errcount(&V_icmp6stat.icp6s_outerrhist, ND_REDIRECT, 0);
|
||||
icmp6_errcount(ND_REDIRECT, 0);
|
||||
|
||||
/* if we are not router, we don't send icmp6 redirect */
|
||||
if (!V_ip6_forwarding)
|
||||
|
Loading…
Reference in New Issue
Block a user