summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/ip/ip6.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/inet/ip/ip6.c')
-rw-r--r--usr/src/uts/common/inet/ip/ip6.c443
1 files changed, 249 insertions, 194 deletions
diff --git a/usr/src/uts/common/inet/ip/ip6.c b/usr/src/uts/common/inet/ip/ip6.c
index fbcfcae3bd..2ceecd4ac3 100644
--- a/usr/src/uts/common/inet/ip/ip6.c
+++ b/usr/src/uts/common/inet/ip/ip6.c
@@ -183,7 +183,7 @@ static kstat_t *ip6_kstat;
* IPv6 mibs when the interface (ill) is not known.
* When the ill is known the per-interface mib in the ill is used.
*/
-mib2_ipv6IfStatsEntry_t ip6_mib;
+mib2_ipIfStatsEntry_t ip6_mib;
mib2_ipv6IfIcmpEntry_t icmp6_mib;
/*
@@ -445,7 +445,8 @@ icmp_inbound_v6(queue_t *q, mblk_t *mp, ill_t *ill, uint_t hdr_length,
mp1 = copymsg(mp);
freemsg(mp);
if (mp1 == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_icmp6_mib,
+ ipv6IfIcmpInErrors);
if (mctl_present)
freeb(first_mp);
return;
@@ -572,7 +573,7 @@ icmp_inbound_v6(queue_t *q, mblk_t *mp, ill_t *ill, uint_t hdr_length,
*/
ASSERT(first_mp == mp);
if ((first_mp = ipsec_in_alloc(B_FALSE)) == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(mp);
return;
}
@@ -585,7 +586,7 @@ icmp_inbound_v6(queue_t *q, mblk_t *mp, ill_t *ill, uint_t hdr_length,
ii->ipsec_in_zoneid = zoneid;
ASSERT(zoneid != ALL_ZONES);
if (!ipsec_in_to_out(first_mp, NULL, ip6h)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
return;
}
put(WR(q), first_mp);
@@ -700,7 +701,7 @@ icmp_inbound_too_big_v6(queue_t *q, mblk_t *mp, ill_t *ill,
mp1 = copymsg(mp);
freemsg(mp);
if (mp1 == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
if (mctl_present)
freeb(first_mp);
return;
@@ -722,7 +723,7 @@ icmp_inbound_too_big_v6(queue_t *q, mblk_t *mp, ill_t *ill,
inner_ip6h = (ip6_t *)&icmp6[1]; /* Packet in error */
if ((uchar_t *)&inner_ip6h[1] > mp->b_wptr) {
if (!pullupmsg(mp, (uchar_t *)&inner_ip6h[1] - mp->b_rptr)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(first_mp);
return;
}
@@ -1060,9 +1061,10 @@ icmp_inbound_error_fanout_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h,
*/
ASSERT(first_mp == mp);
first_mp = ipsec_in_alloc(B_FALSE);
+ ASSERT(ill != NULL);
if (first_mp == NULL) {
freemsg(mp);
- BUMP_MIB(&ip_mib, ipInDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
return;
}
ii = (ipsec_in_t *)first_mp->b_rptr;
@@ -1071,7 +1073,6 @@ icmp_inbound_error_fanout_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h,
ii->ipsec_in_secure = B_FALSE;
first_mp->b_cont = mp;
mp->b_datap->db_type = M_CTL;
- ASSERT(ill != NULL);
ii->ipsec_in_ill_index =
ill->ill_phyint->phyint_ifindex;
ii->ipsec_in_rill_index = ii->ipsec_in_ill_index;
@@ -1555,7 +1556,7 @@ icmp_pick_source_v6(queue_t *wq, in6_addr_t *origsrc, in6_addr_t *origdst,
NULL, NULL, zoneid, NULL,
(MATCH_IRE_DEFAULT|MATCH_IRE_RECURSIVE));
if (ire == NULL) {
- BUMP_MIB(&ip6_mib, ipv6OutNoRoutes);
+ BUMP_MIB(&ip6_mib, ipIfStatsOutNoRoutes);
return (NULL);
}
/*
@@ -1581,7 +1582,7 @@ icmp_pick_source_v6(queue_t *wq, in6_addr_t *origsrc, in6_addr_t *origdst,
NULL, NULL, zoneid, NULL,
(MATCH_IRE_DEFAULT|MATCH_IRE_RECURSIVE));
if (ire == NULL) {
- BUMP_MIB(&ip6_mib, ipv6OutNoRoutes);
+ BUMP_MIB(&ip6_mib, ipIfStatsOutNoRoutes);
return (NULL);
}
ASSERT(ire != NULL);
@@ -1654,7 +1655,7 @@ icmp_pkt_v6(queue_t *q, mblk_t *mp, void *stuff, size_t len,
* Convert the IPSEC_IN to IPSEC_OUT.
*/
if (!ipsec_in_to_out(ipsec_mp, NULL, ip6h)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
ill_refrele(ill);
return;
}
@@ -1676,7 +1677,7 @@ icmp_pkt_v6(queue_t *q, mblk_t *mp, void *stuff, size_t len,
ASSERT(mp->b_datap->db_type == M_DATA);
if ((ipsec_mp = ipsec_in_alloc(B_FALSE)) == NULL) {
freemsg(mp);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
ill_refrele(ill);
return;
}
@@ -1698,7 +1699,7 @@ icmp_pkt_v6(queue_t *q, mblk_t *mp, void *stuff, size_t len,
* Convert the IPSEC_IN to IPSEC_OUT.
*/
if (!ipsec_in_to_out(ipsec_mp, NULL, ip6h)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
ill_refrele(ill);
return;
}
@@ -3275,7 +3276,7 @@ ip_fanout_proto_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill,
if (ip_fanout_send_icmp_v6(q, first_mp, flags,
ICMP6_PARAM_PROB, ICMP6_PARAMPROB_NEXTHEADER,
nexthdr_offset, mctl_present, zoneid)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InUnknownProtos);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInUnknownProtos);
}
return;
@@ -3339,10 +3340,11 @@ ip_fanout_proto_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill,
mp1 = ip_add_info_v6(mp1, inill, &dst);
}
if (mp1 == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
} else if (!canputnext(rq)) {
if (flags & IP_FF_RAWIP) {
- BUMP_MIB(ill->ill_ip6_mib, rawipInOverflows);
+ BUMP_MIB(ill->ill_ip_mib,
+ rawipIfStatsInOverflows);
} else {
BUMP_MIB(ill->ill_icmp6_mib,
ipv6IfIcmpInOverflows);
@@ -3363,7 +3365,8 @@ ip_fanout_proto_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill,
if (first_mp1 != NULL) {
if (mctl_present)
freeb(first_mp1);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsHCInDelivers);
putnext(rq, mp1);
}
}
@@ -3402,7 +3405,7 @@ ip_fanout_proto_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill,
/* Add header */
mp = ip_add_info_v6(mp, inill, &dst);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
if (mctl_present)
freeb(first_mp);
@@ -3417,7 +3420,7 @@ ip_fanout_proto_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill,
rq = connp->conn_rq;
if (!canputnext(rq)) {
if (flags & IP_FF_RAWIP) {
- BUMP_MIB(ill->ill_ip6_mib, rawipInOverflows);
+ BUMP_MIB(ill->ill_ip_mib, rawipIfStatsInOverflows);
} else {
BUMP_MIB(ill->ill_icmp6_mib, ipv6IfIcmpInOverflows);
}
@@ -3449,7 +3452,7 @@ ip_fanout_proto_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill,
return;
}
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
putnext(rq, mp);
if (mctl_present)
freeb(first_mp);
@@ -3585,7 +3588,7 @@ ip_fanout_tcp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill, ill_t *inill,
return;
}
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
tcp_xmit_listeners_reset(first_mp, hdr_len, zoneid);
if (connp != NULL)
CONN_DEC_REF(connp);
@@ -3712,7 +3715,7 @@ ip_fanout_tcp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill, ill_t *inill,
/* Add header */
mp = ip_add_info_v6(mp, inill, &ip6h->ip6_dst);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
if (mctl_present)
freeb(first_mp);
@@ -3725,7 +3728,7 @@ ip_fanout_tcp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, ill_t *ill, ill_t *inill,
}
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
if (IPCL_IS_TCP(connp)) {
(*ip_input_proc)(connp->conn_sqp, first_mp,
connp->conn_recv, connp, SQTAG_IP6_TCP_INPUT);
@@ -3860,7 +3863,7 @@ ip_fanout_udp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, uint32_t ports,
/* Add header */
mp = ip_add_info_v6(mp, inill, &dst);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
if (mctl_present)
freeb(first_mp);
@@ -3871,7 +3874,7 @@ ip_fanout_udp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, uint32_t ports,
first_mp = mp;
}
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
/* Send it upstream */
CONN_UDP_RECV(connp, mp);
@@ -3949,11 +3952,11 @@ ip_fanout_udp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, uint32_t ports,
if (mp1 == NULL) {
if (mctl_present)
freeb(first_mp1);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
goto next_one;
}
if (CONN_UDP_FLOWCTLD(connp)) {
- BUMP_MIB(ill->ill_ip6_mib, udpInOverflows);
+ BUMP_MIB(ill->ill_ip_mib, udpIfStatsInOverflows);
freemsg(first_mp1);
goto next_one;
}
@@ -3967,7 +3970,7 @@ ip_fanout_udp_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h, uint32_t ports,
if (first_mp1 != NULL) {
if (mctl_present)
freeb(first_mp1);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
/* Send it upstream */
CONN_UDP_RECV(connp, mp1);
@@ -4010,7 +4013,7 @@ next_one:
/* Add header */
mp = ip_add_info_v6(mp, inill, &dst);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
if (mctl_present)
freeb(first_mp);
@@ -4022,19 +4025,19 @@ next_one:
}
}
if (CONN_UDP_FLOWCTLD(connp)) {
- BUMP_MIB(ill->ill_ip6_mib, udpInOverflows);
+ BUMP_MIB(ill->ill_ip_mib, udpIfStatsInOverflows);
freemsg(mp);
} else {
if (CONN_INBOUND_POLICY_PRESENT_V6(connp) || secure) {
first_mp = ipsec_check_inbound_policy(first_mp,
connp, NULL, ip6h, mctl_present);
if (first_mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
return;
}
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
/* Send it upstream */
CONN_UDP_RECV(connp, mp);
@@ -4060,7 +4063,7 @@ notfound:
if (ip_fanout_send_icmp_v6(q, first_mp, flags,
ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOPORT, 0,
mctl_present, zoneid)) {
- BUMP_MIB(&ip_mib, udpNoPorts);
+ BUMP_MIB(ill->ill_ip_mib, udpIfStatsNoPorts);
}
}
}
@@ -5622,18 +5625,18 @@ err_ret:
}
if (ill != NULL) {
if (mp->b_prev != NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
} else {
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutDiscards);
}
if (need_rele)
ill_refrele(ill);
} else {
if (mp->b_prev != NULL) {
- BUMP_MIB(&ip6_mib, ipv6InDiscards);
+ BUMP_MIB(&ip6_mib, ipIfStatsInDiscards);
} else {
- BUMP_MIB(&ip6_mib, ipv6OutDiscards);
+ BUMP_MIB(&ip6_mib, ipIfStatsOutDiscards);
}
}
/* Did this packet originate externally? */
@@ -5687,18 +5690,18 @@ icmp_err_ret:
/* Did this packet originate externally? */
if (mp->b_prev) {
if (ill != NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InNoRoutes);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInNoRoutes);
} else {
- BUMP_MIB(&ip6_mib, ipv6InNoRoutes);
+ BUMP_MIB(&ip6_mib, ipIfStatsInNoRoutes);
}
mp->b_next = NULL;
mp->b_prev = NULL;
q = WR(q);
} else {
if (ill != NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutNoRoutes);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutNoRoutes);
} else {
- BUMP_MIB(&ip6_mib, ipv6OutNoRoutes);
+ BUMP_MIB(&ip6_mib, ipIfStatsOutNoRoutes);
}
if (ip_hdr_complete_v6(ip6h, zoneid)) {
/* Failed */
@@ -6394,9 +6397,9 @@ err_ret:
ill_held = B_TRUE;
}
if (mp->b_prev || mp->b_next) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
} else {
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutDiscards);
}
ip1dbg(("ip_newroute_ipif_v6: dropped\n"));
mp->b_next = NULL;
@@ -6653,8 +6656,8 @@ ip_process_rthdr(queue_t *q, mblk_t *mp, ip6_t *ip6h, ip6_rthdr_t *rth,
if (!ipv6_forward_src_routed) {
/* XXX Check for source routed out same interface? */
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InAddrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsForwProhibits);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInAddrErrors);
freemsg(hada_mp);
freemsg(mp);
return;
@@ -6702,7 +6705,7 @@ ip_process_rthdr(queue_t *q, mblk_t *mp, ip6_t *ip6h, ip6_rthdr_t *rth,
addrptr += (numaddr - rthdr->ip6r0_segleft);
if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst) ||
IN6_IS_ADDR_MULTICAST(addrptr)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(hada_mp);
freemsg(mp);
return;
@@ -6907,8 +6910,9 @@ ip_rput_v6(queue_t *q, mblk_t *mp)
putnext(q, mp);
return;
}
-
- BUMP_MIB(ill->ill_ip6_mib, ipv6InReceives);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInReceives);
+ UPDATE_MIB(ill->ill_ip_mib, ipIfStatsHCInOctets,
+ (mp->b_cont == NULL) ? MBLKL(mp) : msgdsize(mp));
/*
* if db_ref > 1 then copymsg and free original. Packet may be
* changed and do not want other entity who has a reference to this
@@ -6974,7 +6978,7 @@ ip_rput_v6(queue_t *q, mblk_t *mp)
flags |= (ll_multicast ? IP6_IN_LLMCAST : 0);
ip_rput_data_v6(q, ill, mp, ip6h, flags, hada_mp, dl_mp);
} else {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InIPv4);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInWrongIPVersion);
goto discard;
}
freemsg(dl_mp);
@@ -6984,7 +6988,7 @@ discard:
if (dl_mp != NULL)
freeb(dl_mp);
freemsg(first_mp);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
}
/*
@@ -7107,7 +7111,7 @@ ipsec_early_ah_v6(queue_t *q, mblk_t *first_mp, boolean_t mctl_present,
switch (ipsec_needs_processing_v6(
(mctl_present ? first_mp->b_cont : first_mp), &nexthdr)) {
case IPSEC_MEMORY_ERROR:
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(hada_mp);
freemsg(first_mp);
return (B_TRUE);
@@ -7122,7 +7126,7 @@ ipsec_early_ah_v6(queue_t *q, mblk_t *first_mp, boolean_t mctl_present,
if ((first_mp = ipsec_in_alloc(B_FALSE)) == NULL) {
ip1dbg(("ipsec_early_ah_v6: IPSEC_IN "
"allocation failure.\n"));
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(hada_mp);
freemsg(mp);
return (B_TRUE);
@@ -7165,7 +7169,7 @@ ipsec_early_ah_v6(queue_t *q, mblk_t *first_mp, boolean_t mctl_present,
ip_fanout_proto_again(first_mp, ill, ill, ire);
break;
case IPSEC_STATUS_FAILED:
- BUMP_MIB(&ip6_mib, ipv6InDiscards);
+ BUMP_MIB(&ip6_mib, ipIfStatsInDiscards);
break;
case IPSEC_STATUS_PENDING:
/* no action needed */
@@ -7187,7 +7191,7 @@ ip_check_v6_mblk(mblk_t *mp, ill_t *ill)
if (!OK_32PTR((uchar_t *)ip6h) ||
(mp->b_wptr - (uchar_t *)ip6h) < IPV6_HDR_LEN) {
if (!pullupmsg(mp, IPV6_HDR_LEN)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
ip1dbg(("ip_rput_v6: pullupmsg failed\n"));
freemsg(mp);
return (-1);
@@ -7214,7 +7218,7 @@ ip_check_v6_mblk(mblk_t *mp, ill_t *ill)
if (ip6_len > pkt_len) {
ip1dbg(("ip_rput_data_v6: packet too short %d %d\n",
ip6_len, pkt_len));
- BUMP_MIB(ill->ill_ip6_mib, ipv6InTruncatedPkts);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInTruncatedPkts);
freemsg(mp);
return (-1);
}
@@ -7222,7 +7226,7 @@ ip_check_v6_mblk(mblk_t *mp, ill_t *ill)
if (!adjmsg(mp, -diff)) {
ip1dbg(("ip_rput_data_v6: adjmsg failed\n"));
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(mp);
return (-1);
}
@@ -7326,7 +7330,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
if (mp->b_cont != NULL &&
whereptr + MIN_EHDR_LEN > mp->b_wptr) {
if (!pullupmsg(mp, IPV6_HDR_LEN + MIN_EHDR_LEN)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -7344,7 +7348,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
if (mp->b_cont != NULL &&
whereptr + ehdrlen > mp->b_wptr) {
if (!pullupmsg(mp, IPV6_HDR_LEN + ehdrlen)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -7364,7 +7368,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
* Packet has been consumed and any
* needed ICMP messages sent.
*/
- BUMP_MIB(ill->ill_ip6_mib, ipv6InHdrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInHdrErrors);
freemsg(hada_mp);
return;
case 0:
@@ -7382,7 +7386,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
if (is_system_labeled() && !tsol_get_pkt_label(mp, IPV6_VERSION)) {
if (ip6opt_ls != 0)
ip0dbg(("tsol_get_pkt_label v6 failed\n"));
- BUMP_MIB(ill->ill_ip6_mib, ipv6InHdrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInHdrErrors);
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -7397,7 +7401,8 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
* much cleaner I think. See ip_rput for how that was done.
*/
if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InMcastPkts);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInMcastPkts);
+ UPDATE_MIB(ill->ill_ip_mib, ipIfStatsHCInMcastOctets, pkt_len);
/*
* XXX TODO Give to mrouted to for multicast forwarding.
*/
@@ -7411,7 +7416,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
" which is not for us: %s\n", AF_INET6,
&ip6h->ip6_dst);
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -7446,7 +7451,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
"addressed packet which is not for us: "
"%s\n", AF_INET6, &ip6h->ip6_dst);
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(first_mp);
return;
}
@@ -7471,9 +7476,11 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
* originated externally.
*/
if (!(ill->ill_flags & ILLF_ROUTER) || ll_multicast) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
- if (!(ill->ill_flags & ILLF_ROUTER))
- BUMP_MIB(ill->ill_ip6_mib, ipv6InAddrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsForwProhibits);
+ if (!(ill->ill_flags & ILLF_ROUTER)) {
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInAddrErrors);
+ }
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -7492,7 +7499,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
* an unspecified source address.
*/
if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->ip6_src)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsForwProhibits);
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -7531,13 +7538,21 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
*/
if (no_forward || ll_multicast || (hada_mp != NULL)) {
freemsg(hada_mp);
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
- if (no_forward)
- BUMP_MIB(ill->ill_ip6_mib, ipv6InAddrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsForwProhibits);
+ if (no_forward) {
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInAddrErrors);
+ }
freemsg(mp);
ire_refrele(ire);
return;
}
+ /*
+ * ipIfStatsHCInForwDatagrams should only be increment if there
+ * will be an attempt to forward the packet, which is why we
+ * increment after the above condition has been checked.
+ */
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInForwDatagrams);
if (ip6h->ip6_hops <= 1) {
ip1dbg(("ip_rput_data_v6: hop limit expired.\n"));
/* Sent by forwarding path, and router is global zone */
@@ -7552,7 +7567,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
* an unspecified source address.
*/
if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->ip6_src)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsForwProhibits);
freemsg(mp);
ire_refrele(ire);
return;
@@ -7562,7 +7577,8 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
mblk_t *mp1;
if ((mp1 = tsol_ip_forward(ire, mp)) == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsForwProhibits);
freemsg(mp);
ire_refrele(ire);
return;
@@ -7574,7 +7590,7 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
}
if (pkt_len > ire->ire_max_frag) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InTooBigErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInTooBigErrors);
/* Sent by forwarding path, and router is global zone */
icmp_pkt2big_v6(WR(q), mp, ire->ire_max_frag,
ll_multicast, B_TRUE, GLOBAL_ZONEID);
@@ -7597,7 +7613,8 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
ill_group != ire_group)) {
if (IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_dst) ||
IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_src)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InAddrErrors);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInAddrErrors);
freemsg(mp);
ire_refrele(ire);
return;
@@ -7626,8 +7643,8 @@ ip_rput_data_v6(queue_t *q, ill_t *inill, mblk_t *mp, ip6_t *ip6h,
* address, but will forward.
*/
if (!IN6_IS_ADDR_LINKLOCAL(v6targ)) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InAddrErrors);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInAddrErrors);
goto forward;
}
} else {
@@ -7671,7 +7688,7 @@ forward:
if (mp != NULL) {
UPDATE_IB_PKT_COUNT(ire);
ire->ire_last_used_time = lbolt;
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutForwDatagrams);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCOutForwDatagrams);
ip_xmit_v6(mp, ire, 0, NULL, B_FALSE, NULL);
}
IRE_REFRELE(ire);
@@ -7735,7 +7752,7 @@ forward:
* load spreading, we won't drop packets when we
* are doing strict multihoming checks.
*/
- BUMP_MIB(ill->ill_ip6_mib, ipv6ForwProhibits);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsForwProhibits);
freemsg(hada_mp);
freemsg(first_mp);
ire_refrele(ire);
@@ -7781,8 +7798,8 @@ ipv6forus:
whereptr + TCP_MIN_HEADER_LENGTH > mp->b_wptr) {
if (!pullupmsg(mp,
hdr_len + TCP_MIN_HEADER_LENGTH)) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(first_mp);
return;
}
@@ -7798,8 +7815,8 @@ ipv6forus:
if (offset < 5) {
ip1dbg(("ip_rput_data_v6: short "
"TCP data offset"));
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(first_mp);
return;
}
@@ -7814,8 +7831,8 @@ ipv6forus:
whereptr + offset > mp->b_wptr) {
if (!pullupmsg(mp,
hdr_len + offset)) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(first_mp);
return;
}
@@ -7854,7 +7871,7 @@ ipv6forus:
mp, mp1, cksum_err);
if (cksum_err) {
- BUMP_MIB(&ip_mib, tcpInErrs);
+ BUMP_MIB(ill->ill_ip_mib, tcpIfStatsInErrs);
if (hck_flags & HCK_FULLCKSUM)
IP6_STAT(ip6_tcp_in_full_hw_cksum_err);
@@ -7885,8 +7902,8 @@ tcp_fanout:
if (whereptr + sizeof (*sctph) > mp->b_wptr) {
ASSERT(mp->b_cont != NULL);
if (!pullupmsg(mp, hdr_len + sizeof (*sctph))) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(mp);
return;
}
@@ -7915,7 +7932,7 @@ tcp_fanout:
B_TRUE, ipif_id, zoneid);
return;
}
- BUMP_MIB(&ip_mib, ipInDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
sctp_input(connp, (ipha_t *)ip6h, mp, first_mp, ill,
B_FALSE, mctl_present);
return;
@@ -7937,8 +7954,8 @@ tcp_fanout:
if (mp->b_cont != NULL &&
whereptr + UDPH_SIZE > mp->b_wptr) {
if (!pullupmsg(mp, hdr_len + UDPH_SIZE)) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(first_mp);
return;
}
@@ -7963,7 +7980,8 @@ tcp_fanout:
/* 0x0000 checksum is invalid */
ip1dbg(("ip_rput_data_v6: Invalid UDP "
"checksum value 0x0000\n"));
- BUMP_MIB(ill->ill_ip6_mib, udpInCksumErrs);
+ BUMP_MIB(ill->ill_ip_mib,
+ udpIfStatsInCksumErrs);
freemsg(first_mp);
return;
}
@@ -8007,7 +8025,8 @@ tcp_fanout:
IP6_STAT(ip6_in_sw_cksum);
if (cksum_err) {
- BUMP_MIB(ill->ill_ip6_mib, udpInCksumErrs);
+ BUMP_MIB(ill->ill_ip_mib,
+ udpIfStatsInCksumErrs);
if (hck_flags & HCK_FULLCKSUM)
IP6_STAT(ip6_udp_in_full_hw_cksum_err);
@@ -8181,7 +8200,7 @@ tcp_fanout:
* Packet has been consumed and any needed
* ICMP errors sent.
*/
- BUMP_MIB(ill->ill_ip6_mib, ipv6InHdrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInHdrErrors);
freemsg(hada_mp);
return;
case 0:
@@ -8199,7 +8218,7 @@ tcp_fanout:
#else
freemsg(hada_mp);
freemsg(first_mp);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
return;
#endif
}
@@ -8223,8 +8242,8 @@ tcp_fanout:
whereptr + sizeof (ip6_frag_t) > mp->b_wptr) {
if (!pullupmsg(mp,
pkt_len - remlen + sizeof (ip6_frag_t))) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(mp);
return;
}
@@ -8235,7 +8254,7 @@ tcp_fanout:
fraghdr = (ip6_frag_t *)whereptr;
used = (uint_t)sizeof (ip6_frag_t);
- BUMP_MIB(ill->ill_ip6_mib, ipv6ReasmReqds);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsReasmReqds);
/*
* Invoke the CGTP (multirouting) filtering module to
@@ -8265,7 +8284,7 @@ tcp_fanout:
return;
}
/* The first mblk are the headers before the frag hdr */
- BUMP_MIB(ill->ill_ip6_mib, ipv6ReasmOKs);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsReasmOKs);
first_mp = mp; /* mp has most likely changed! */
no_frag_hdr_len = mp->b_wptr - mp->b_rptr;
@@ -8326,8 +8345,8 @@ tcp_fanout:
if (rthdr->ip6r_segleft != 0) {
/* Not end of source route */
if (ll_multicast) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6ForwProhibits);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsForwProhibits);
freemsg(hada_mp);
freemsg(mp);
return;
@@ -8357,8 +8376,8 @@ tcp_fanout:
NULL) {
ip1dbg(("ip_rput_data_v6: IPSEC_IN "
"allocation failure.\n"));
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsInDiscards);
freemsg(mp);
return;
}
@@ -8418,7 +8437,7 @@ tcp_fanout:
case IPSEC_STATUS_SUCCESS:
break;
case IPSEC_STATUS_FAILED:
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
/* FALLTHRU */
case IPSEC_STATUS_PENDING:
return;
@@ -8431,7 +8450,7 @@ tcp_fanout:
/* All processing is done. Count as "delivered". */
freemsg(hada_mp);
freemsg(first_mp);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
return;
}
whereptr += used;
@@ -8443,7 +8462,7 @@ tcp_fanout:
pkt_too_short:
ip1dbg(("ip_rput_data_v6: packet too short %d %lu %d\n",
ip6_len, pkt_len, remlen));
- BUMP_MIB(ill->ill_ip6_mib, ipv6InTruncatedPkts);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInTruncatedPkts);
freemsg(hada_mp);
freemsg(first_mp);
return;
@@ -8472,7 +8491,7 @@ udp_fanout:
if (CONN_UDP_FLOWCTLD(connp)) {
freemsg(first_mp);
- BUMP_MIB(ill->ill_ip6_mib, udpInOverflows);
+ BUMP_MIB(ill->ill_ip_mib, udpIfStatsInOverflows);
CONN_DEC_REF(connp);
return;
}
@@ -8481,7 +8500,7 @@ udp_fanout:
if (IP6_IN_IPP(flags)) {
ip_process(IPP_LOCAL_IN, &mp, ill->ill_phyint->phyint_ifindex);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
return;
}
@@ -8491,15 +8510,14 @@ udp_fanout:
IN6_IS_ADDR_LINKLOCAL(&ip6h->ip6_src)) {
mp = ip_add_info_v6(mp, inill, &ip6h->ip6_dst);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
CONN_DEC_REF(connp);
return;
}
}
IP6_STAT(ip6_udp_fast_path);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InReceives);
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDelivers);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsHCInDelivers);
/* Send it upstream */
CONN_UDP_RECV(connp, mp);
@@ -8620,7 +8638,7 @@ ip_rput_frag_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h,
if (more_frags && (ntohs(ip6h->ip6_plen) & 7)) {
zoneid_t zoneid;
- BUMP_MIB(ill->ill_ip6_mib, ipv6InHdrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInHdrErrors);
zoneid = ipif_lookup_addr_zoneid_v6(&ip6h->ip6_dst, ill);
if (zoneid == ALL_ZONES) {
freemsg(mp);
@@ -8646,7 +8664,7 @@ ip_rput_frag_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h,
if (end > IP_MAXPACKET) {
zoneid_t zoneid;
- BUMP_MIB(ill->ill_ip6_mib, ipv6InHdrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInHdrErrors);
zoneid = ipif_lookup_addr_zoneid_v6(&ip6h->ip6_dst, ill);
if (zoneid == ALL_ZONES) {
freemsg(mp);
@@ -8766,7 +8784,7 @@ ip_rput_frag_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h,
/* New guy. Allocate a frag message. */
mp1 = allocb(sizeof (*ipf), BPRI_MED);
if (!mp1) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
freemsg(mp);
partial_reass_done:
mutex_exit(&ipfb->ipfb_lock);
@@ -9011,7 +9029,7 @@ ip_rput_frag_v6(queue_t *q, mblk_t *mp, ip6_t *ip6h,
*/
reass_done:
if (hdr_length < sizeof (ip6_frag_t)) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InHdrErrors);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInHdrErrors);
ip1dbg(("ip_rput_frag_v6: bad packet\n"));
freemsg(mp);
return (NULL);
@@ -9035,7 +9053,7 @@ reass_done:
mblk_t *nmp;
if (!(nmp = dupb(mp))) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6InDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsInDiscards);
ip1dbg(("ip_rput_frag_v6: dupb failed\n"));
freemsg(mp);
return (NULL);
@@ -9283,7 +9301,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
/* Otherwise contains insert offset for checksum */
int unspec_src;
boolean_t do_outrequests; /* Increment OutRequests? */
- mib2_ipv6IfStatsEntry_t *mibptr;
+ mib2_ipIfStatsEntry_t *mibptr;
int match_flags = MATCH_IRE_ILL_GROUP;
boolean_t attach_if = B_FALSE;
mblk_t *first_mp;
@@ -9346,7 +9364,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
* originating from tcp should have been directed over to
* tcp_multisend() in the first place.
*/
- BUMP_MIB(&ip6_mib, ipv6OutDiscards);
+ BUMP_MIB(&ip6_mib, ipIfStatsOutDiscards);
freemsg(mp);
return;
} else if (DB_TYPE(mp) == M_CTL) {
@@ -9439,15 +9457,11 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
}
ill_refhold_locked(ill);
mutex_exit(&ill->ill_lock);
- mibptr = ill->ill_ip6_mib;
- /*
- * ill_ip6_mib is allocated by ipif_set_values() when
- * ill_isv6 is set. Thus if ill_isv6 is true,
- * ill_ip6_mib had better not be NULL.
- */
+ mibptr = ill->ill_ip_mib;
+
ASSERT(mibptr != NULL);
unspec_src = 0;
- BUMP_MIB(mibptr, ipv6OutRequests);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
do_outrequests = B_FALSE;
zoneid = (zoneid_t)(uintptr_t)arg;
} else {
@@ -9494,6 +9508,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
/* XXX Any better way to get the protocol fast ? */
if (((mp = ipsec_attach_ipsec_out(mp, connp, NULL,
connp->conn_ulp)) == NULL)) {
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
if (need_decref)
CONN_DEC_REF(connp);
return;
@@ -9512,8 +9527,8 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
(mp->b_wptr - (uchar_t *)ip6h) < IPV6_HDR_LEN) {
ip0dbg(("ip_wput_v6: bad alignment or length\n"));
if (do_outrequests)
- BUMP_MIB(mibptr, ipv6OutRequests);
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
if (ill != NULL)
ill_refrele(ill);
@@ -9563,9 +9578,11 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
if ((mp->b_wptr - (uchar_t *)ip6i) == sizeof (ip6i_t)) {
if (!pullupmsg(mp, -1)) {
ip1dbg(("ip_wput_v6: pullupmsg failed\n"));
- if (do_outrequests)
- BUMP_MIB(mibptr, ipv6OutRequests);
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ if (do_outrequests) {
+ BUMP_MIB(mibptr,
+ ipIfStatsHCOutRequests);
+ }
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
if (ill != NULL)
ill_refrele(ill);
@@ -9605,9 +9622,11 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
ill = ill_lookup_on_ifindex(ip6i->ip6i_ifindex, 1,
NULL, NULL, NULL, NULL);
if (ill == NULL) {
- if (do_outrequests)
- BUMP_MIB(mibptr, ipv6OutRequests);
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ if (do_outrequests) {
+ BUMP_MIB(mibptr,
+ ipIfStatsHCOutRequests);
+ }
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
ip1dbg(("ip_wput_v6: bad ifindex %d\n",
ip6i->ip6i_ifindex));
if (need_decref)
@@ -9615,7 +9634,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
freemsg(first_mp);
return;
}
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
if (ip6i->ip6i_flags & IP6I_IFINDEX) {
/*
* Preserve the index so that when we return
@@ -9657,8 +9676,8 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
if (ire == NULL) {
if (do_outrequests)
BUMP_MIB(mibptr,
- ipv6OutRequests);
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ ipIfStatsHCOutRequests);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
ip1dbg(("ip_wput_v6: bad source "
"addr\n"));
freemsg(first_mp);
@@ -9689,7 +9708,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
unspec_src = 1;
if (do_outrequests && ill != NULL) {
- BUMP_MIB(mibptr, ipv6OutRequests);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
do_outrequests = B_FALSE;
}
/*
@@ -9727,7 +9746,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
ill = conn_outgoing_pill;
attach_if = B_TRUE;
match_flags = MATCH_IRE_ILL;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
/*
* Check if we need an ire that will not be
@@ -9768,7 +9787,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
*/
drop_if_delayed = B_TRUE;
match_flags = MATCH_IRE_ILL;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
/*
* Check if we need an ire that will not be
@@ -9831,7 +9850,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
if (ill != NULL)
ill_refrele(ill);
ill = conn_outgoing_ill;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
goto send_from_ill;
}
@@ -9915,11 +9934,11 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
/* Handle IRE_LOCAL's that might appear here */
if (ire->ire_type == IRE_CACHE) {
mibptr = ((ill_t *)ire->ire_stq->q_ptr)->
- ill_ip6_mib;
+ ill_ip_mib;
} else {
- mibptr = ire->ire_ipif->ipif_ill->ill_ip6_mib;
+ mibptr = ire->ire_ipif->ipif_ill->ill_ip_mib;
}
- BUMP_MIB(mibptr, ipv6OutRequests);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
}
ASSERT(!attach_if);
@@ -10021,8 +10040,9 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
mp = ip_add_info_v6(mp, NULL, v6dstp);
if (mp == NULL) {
if (do_outrequests)
- BUMP_MIB(mibptr, ipv6OutRequests);
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr,
+ ipIfStatsHCOutRequests);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
if (mctl_present)
freeb(first_mp);
if (ill != NULL)
@@ -10051,9 +10071,9 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
" failed\n"));
if (do_outrequests) {
BUMP_MIB(mibptr,
- ipv6OutRequests);
+ ipIfStatsHCOutRequests);
}
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
if (ill != NULL)
ill_refrele(ill);
@@ -10073,7 +10093,7 @@ ip_output_v6(void *arg, mblk_t *mp, void *arg2, int caller)
}
}
if (do_outrequests)
- BUMP_MIB(mibptr, ipv6OutRequests);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
if (need_decref)
CONN_DEC_REF(connp);
ip_newroute_v6(q, first_mp, v6dstp, &ip6h->ip6_src, NULL, zoneid);
@@ -10119,7 +10139,7 @@ multicast_discard:
ill_refrele(ill);
freemsg(first_mp);
if (do_outrequests)
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
if (need_decref)
CONN_DEC_REF(connp);
return;
@@ -10128,7 +10148,7 @@ multicast_discard:
ill = connp->conn_outgoing_pill;
attach_if = B_TRUE;
match_flags = MATCH_IRE_ILL;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
/*
* Check if we need an ire that will not be
@@ -10264,12 +10284,14 @@ multicast_discard:
if (ill->ill_phyint->phyint_flags & PHYI_LOOPBACK)
v6dstp = &ill->ill_ipif->ipif_v6lcl_addr;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
if (do_outrequests) {
- BUMP_MIB(mibptr, ipv6OutRequests);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
do_outrequests = B_FALSE;
}
- BUMP_MIB(mibptr, ipv6OutMcastPkts);
+ BUMP_MIB(mibptr, ipIfStatsHCOutMcastPkts);
+ UPDATE_MIB(mibptr, ipIfStatsHCOutMcastOctets,
+ ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN);
/*
* As we may lose the conn by the time we reach ip_wput_ire_v6
@@ -10285,7 +10307,7 @@ multicast_discard:
} else {
ASSERT(mp == first_mp);
if ((first_mp = ipsec_alloc_ipsec_out()) == NULL) {
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(mp);
if (ill != NULL)
ill_refrele(ill);
@@ -10309,9 +10331,9 @@ multicast_discard:
send_from_ill:
ASSERT(ill != NULL);
- ASSERT(mibptr == ill->ill_ip6_mib);
+ ASSERT(mibptr == ill->ill_ip_mib);
if (do_outrequests) {
- BUMP_MIB(mibptr, ipv6OutRequests);
+ BUMP_MIB(mibptr, ipIfStatsHCOutRequests);
do_outrequests = B_FALSE;
}
@@ -10460,7 +10482,7 @@ send_from_ill:
v6dstp);
}
if (mp == NULL) {
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
ill_refrele(ill);
return;
}
@@ -10474,7 +10496,7 @@ send_from_ill:
if (!pullupmsg(mp, -1)) {
ip1dbg(("ip_wput_v6: pullupmsg"
" failed\n"));
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -10530,7 +10552,7 @@ notv6:
ip_setqinfo(RD(q), IPV4_MINOR, B_TRUE);
}
}
- BUMP_MIB(mibptr, ipv6OutIPv4);
+ BUMP_MIB(mibptr, ipIfStatsOutWrongIPVersion);
(void) ip_output(arg, first_mp, arg2, caller);
if (ill != NULL)
ill_refrele(ill);
@@ -10573,7 +10595,7 @@ ip_wput_local_v6(queue_t *q, ill_t *ill, ip6_t *ip6h, mblk_t *first_mp,
uint8_t nexthdr;
uint16_t hdr_length;
ipsec_out_t *io;
- mib2_ipv6IfStatsEntry_t *mibptr;
+ mib2_ipIfStatsEntry_t *mibptr;
ilm_t *ilm;
uint_t nexthdr_offset;
@@ -10606,7 +10628,7 @@ ip_wput_local_v6(queue_t *q, ill_t *ill, ip6_t *ip6h, mblk_t *first_mp,
return;
nexthdr = ip6h->ip6_nxt;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
/* Fastpath */
switch (nexthdr) {
@@ -10624,7 +10646,7 @@ ip_wput_local_v6(queue_t *q, ill_t *ill, ip6_t *ip6h, mblk_t *first_mp,
if (!ip_hdr_length_nexthdr_v6(mp, ip6h,
&hdr_length, &nexthdrp)) {
/* Malformed packet */
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -10694,7 +10716,7 @@ ip_wput_local_v6(queue_t *q, ill_t *ill, ip6_t *ip6h, mblk_t *first_mp,
if (!pullupmsg(mp, hdr_length + ICMP6_MINLEN)) {
ip1dbg(("ip_wput_v6: ICMP hdr pullupmsg"
" failed\n"));
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -10817,7 +10839,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
uint16_t hdr_length;
uint_t reachable = 0x0;
ill_t *ill;
- mib2_ipv6IfStatsEntry_t *mibptr;
+ mib2_ipIfStatsEntry_t *mibptr;
mblk_t *first_mp;
boolean_t mctl_present;
ipsec_out_t *io;
@@ -10908,7 +10930,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
}
ire_refrele(src_ire);
} else {
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutNoRoutes);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutNoRoutes);
if (src_ire != NULL) {
if (src_ire->ire_flags & RTF_BLACKHOLE) {
ire_refrele(src_ire);
@@ -10949,7 +10971,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
ip6h = (ip6_t *)mp->b_rptr;
nexthdr = ip6h->ip6_nxt;
- mibptr = ill->ill_ip6_mib;
+ mibptr = ill->ill_ip_mib;
if (IN6_IS_ADDR_UNSPECIFIED(&ip6h->ip6_src) && !unspec_src) {
ipif_t *ipif;
@@ -11038,7 +11060,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
ire, fanout_flags);
}
} else {
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
ip1dbg(("ip_wput_ire_v6: "
"copymsg failed\n"));
}
@@ -11051,7 +11073,9 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
* Local multicast or just loopback on loopback
* interface.
*/
- BUMP_MIB(mibptr, ipv6OutMcastPkts);
+ BUMP_MIB(mibptr, ipIfStatsHCOutMcastPkts);
+ UPDATE_MIB(mibptr, ipIfStatsHCOutMcastOctets,
+ ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN);
ip1dbg(("ip_wput_ire_v6: local multicast only\n"));
freemsg(first_mp);
return;
@@ -11102,7 +11126,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
}
return;
}
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -11130,7 +11154,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
if (!ip_hdr_length_nexthdr_v6(mp, ip6h,
&hdr_length, &nexthdrp)) {
/* Malformed packet */
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -11168,7 +11192,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
cksum_request + sizeof (int16_t))) {
ip1dbg(("ip_wput_v6: ICMP hdr pullupmsg"
" failed\n"));
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -11204,7 +11228,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
TCP_CHECKSUM_OFFSET + TCP_CHECKSUM_SIZE)) {
ip1dbg(("ip_wput_v6: TCP hdr pullupmsg"
" failed\n"));
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -11252,7 +11276,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
UDP_CHECKSUM_OFFSET + UDP_CHECKSUM_SIZE)) {
ip1dbg(("ip_wput_v6: UDP hdr pullupmsg"
" failed\n"));
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -11296,7 +11320,7 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
if (!pullupmsg(mp, hdr_length + ICMP6_MINLEN)) {
ip1dbg(("ip_wput_v6: ICMP hdr pullupmsg"
" failed\n"));
- BUMP_MIB(mibptr, ipv6OutDiscards);
+ BUMP_MIB(mibptr, ipIfStatsOutDiscards);
freemsg(first_mp);
return;
}
@@ -11328,8 +11352,8 @@ ip_wput_ire_v6(queue_t *q, mblk_t *mp, ire_t *ire, int unspec_src,
sizeof (*sctph))) {
ip1dbg(("ip_wput_v6: SCTP hdr pullupmsg"
" failed\n"));
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsOutDiscards);
freemsg(mp);
return;
}
@@ -11516,8 +11540,7 @@ free_mmd: IP6_STAT(ip6_frag_mdt_discarded);
freemsg(md_mp);
}
IP6_STAT(ip6_frag_mdt_allocfail);
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragFails);
- UPDATE_MIB(ill->ill_ip6_mib, ipv6OutDiscards, pkts);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragFails);
return;
}
IP6_STAT(ip6_frag_mdt_allocd);
@@ -11658,8 +11681,17 @@ free_mmd: IP6_STAT(ip6_frag_mdt_discarded);
ASSERT(mp->b_wptr == pld_ptr);
/* Update IP statistics */
- UPDATE_MIB(ill->ill_ip6_mib, ipv6OutFragCreates, pkts);
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragOKs);
+ UPDATE_MIB(ill->ill_ip_mib, ipIfStatsOutFragCreates, pkts);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragOKs);
+ UPDATE_MIB(ill->ill_ip_mib, ipIfStatsHCOutTransmits, pkts);
+ /*
+ * The ipv6 header len is accounted for in unfragmentable_len so
+ * when calculating the fragmentation overhead just add the frag
+ * header len.
+ */
+ UPDATE_MIB(ill->ill_ip_mib, ipIfStatsHCOutOctets,
+ (ntohs(ip6h->ip6_plen) - (unfragmentable_len - IPV6_HDR_LEN)) +
+ pkts * (unfragmentable_len + sizeof (ip6_frag_t)));
IP6_STAT_UPDATE(ip6_frag_mdt_pkt_out, pkts);
ire->ire_ob_pkt_count += pkts;
@@ -11717,6 +11749,8 @@ ip_wput_frag_v6(mblk_t *mp, ire_t *ire, uint_t reachable, conn_t *connp,
ASSERT(ire->ire_type == IRE_CACHE);
ill = (ill_t *)ire->ire_stq->q_ptr;
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragReqds);
+
/*
* Determine the length of the unfragmentable portion of this
* datagram. This consists of the IPv6 header, a potential
@@ -11786,7 +11820,7 @@ ip_wput_frag_v6(mblk_t *mp, ire_t *ire, uint_t reachable, conn_t *connp,
hmp = allocb(unfragmentable_len + sizeof (ip6_frag_t) + ip_wroff_extra,
BPRI_HI);
if (hmp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragFails);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragFails);
freemsg(mp);
return;
}
@@ -11829,7 +11863,8 @@ ip_wput_frag_v6(mblk_t *mp, ire_t *ire, uint_t reachable, conn_t *connp,
if (hmp0 == NULL) {
freeb(hmp);
freemsg(mp);
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragFails);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsOutFragFails);
ip1dbg(("ip_wput_frag_v6: copyb failed\n"));
return;
}
@@ -11865,7 +11900,7 @@ ip_wput_frag_v6(mblk_t *mp, ire_t *ire, uint_t reachable, conn_t *connp,
freeb(hmp);
freeb(hmp0);
ip1dbg(("ip_carve_mp: failed\n"));
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragFails);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragFails);
return;
}
hmp0->b_cont = dmp;
@@ -11876,10 +11911,10 @@ ip_wput_frag_v6(mblk_t *mp, ire_t *ire, uint_t reachable, conn_t *connp,
ip_xmit_v6(hmp0, ire, reachable | IP6_NO_IPPOLICY, connp,
caller, NULL);
reachable = 0; /* No need to redo state machine in loop */
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragCreates);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragCreates);
offset += mlen;
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutFragOKs);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutFragOKs);
}
/*
@@ -12037,7 +12072,7 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
"interface.\n", AF_INET6,
&ip6h->ip6_dst);
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutDiscards);
freemsg(mp);
return;
}
@@ -12181,8 +12216,8 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
if (IP6_OUT_IPP(flags)) {
ip_process(IPP_LOCAL_OUT, &mp, ill_index);
if (mp == NULL) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsOutDiscards);
if (next_mp != NULL)
freemsg(next_mp);
if (ire != save_ire) {
@@ -12215,8 +12250,8 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
mp1 = copyb(mp1);
mutex_exit(&nce->nce_lock);
if (mp1 == NULL) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsOutDiscards);
freemsg(mp);
if (next_mp != NULL)
freemsg(next_mp);
@@ -12262,8 +12297,8 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
mp1 = copyb(mp1);
mutex_exit(&nce->nce_lock);
if (mp1 == NULL) {
- BUMP_MIB(ill->ill_ip6_mib,
- ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsOutDiscards);
freemsg(mp);
if (next_mp != NULL)
freemsg(next_mp);
@@ -12318,12 +12353,21 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
}
/*
- * Update ire counters; for save_ire, this has been
- * done by the caller.
+ * Update ire and MIB counters; for save_ire, this has
+ * been done by the caller.
*/
if (ire != save_ire) {
UPDATE_OB_PKT_COUNT(ire);
ire->ire_last_used_time = lbolt;
+
+ if (IN6_IS_ADDR_MULTICAST(&ip6h->ip6_dst)) {
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsHCOutMcastPkts);
+ UPDATE_MIB(ill->ill_ip_mib,
+ ipIfStatsHCOutMcastOctets,
+ ntohs(ip6h->ip6_plen) +
+ IPV6_HDR_LEN);
+ }
}
/*
@@ -12335,6 +12379,11 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
* packet was originally TCP or not currently.
*/
if (io == NULL) {
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsHCOutTransmits);
+ UPDATE_MIB(ill->ill_ip_mib,
+ ipIfStatsHCOutOctets,
+ ntohs(ip6h->ip6_plen) + IPV6_HDR_LEN);
putnext(stq, mp);
} else {
/*
@@ -12346,6 +12395,12 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
/* IPsec kstats: bump lose counter */
freemsg(mp1);
} else {
+ BUMP_MIB(ill->ill_ip_mib,
+ ipIfStatsHCOutTransmits);
+ UPDATE_MIB(ill->ill_ip_mib,
+ ipIfStatsHCOutOctets,
+ ntohs(ip6h->ip6_plen) +
+ IPV6_HDR_LEN);
ipsec_hw_putnext(stq, mp);
}
}
@@ -12535,7 +12590,7 @@ ip_xmit_v6(mblk_t *mp, ire_t *ire, uint_t flags, conn_t *connp,
}
return;
}
- BUMP_MIB(ill->ill_ip6_mib, ipv6OutDiscards);
+ BUMP_MIB(ill->ill_ip_mib, ipIfStatsOutDiscards);
freemsg(mp);
return;
}