mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-18 10:51:18 +08:00
Update to FreeBSD head 2018-02-01
Git mirror commit d079ae0442af8fa3cfd6d7ede190d04e64a2c0d4. Update #3472.
This commit is contained in:
@@ -84,7 +84,7 @@ struct arp_pkthdr {
|
||||
u_char ar_tha[]; /* target hardware address */
|
||||
u_char ar_tpa[]; /* target protocol address */
|
||||
#endif
|
||||
#define ar_sha(ap) (((const u_char *)((ap)+1))+0)
|
||||
#define ar_sha(ap) (((const u_char *)((ap)+1))+ 0)
|
||||
#define ar_spa(ap) (((const u_char *)((ap)+1))+ (ap)->ar_hln)
|
||||
#define ar_tha(ap) (((const u_char *)((ap)+1))+ (ap)->ar_hln+(ap)->ar_pln)
|
||||
#define ar_tpa(ap) (((const u_char *)((ap)+1))+2*(ap)->ar_hln+(ap)->ar_pln)
|
||||
@@ -195,6 +195,30 @@ isnonzero(const u_char *a, size_t len)
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void
|
||||
tpaddr_print_ip(netdissect_options *ndo,
|
||||
const struct arp_pkthdr *ap, u_short pro)
|
||||
{
|
||||
if (pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL)
|
||||
ND_PRINT((ndo, "<wrong proto type>"));
|
||||
else if (PROTO_LEN(ap) != 4)
|
||||
ND_PRINT((ndo, "<wrong len>"));
|
||||
else
|
||||
ND_PRINT((ndo, "%s", ipaddr_string(ndo, TPA(ap))));
|
||||
}
|
||||
|
||||
static void
|
||||
spaddr_print_ip(netdissect_options *ndo,
|
||||
const struct arp_pkthdr *ap, u_short pro)
|
||||
{
|
||||
if (pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL)
|
||||
ND_PRINT((ndo, "<wrong proto type>"));
|
||||
else if (PROTO_LEN(ap) != 4)
|
||||
ND_PRINT((ndo, "<wrong len>"));
|
||||
else
|
||||
ND_PRINT((ndo, "%s", ipaddr_string(ndo, SPA(ap))));
|
||||
}
|
||||
|
||||
static void
|
||||
atmarp_addr_print(netdissect_options *ndo,
|
||||
const u_char *ha, u_int ha_len, const u_char *srca,
|
||||
@@ -210,6 +234,30 @@ atmarp_addr_print(netdissect_options *ndo,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
atmarp_tpaddr_print(netdissect_options *ndo,
|
||||
const struct atmarp_pkthdr *ap, u_short pro)
|
||||
{
|
||||
if (pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL)
|
||||
ND_PRINT((ndo, "<wrong proto type>"));
|
||||
else if (ATMTPROTO_LEN(ap) != 4)
|
||||
ND_PRINT((ndo, "<wrong tplen>"));
|
||||
else
|
||||
ND_PRINT((ndo, "%s", ipaddr_string(ndo, ATMTPA(ap))));
|
||||
}
|
||||
|
||||
static void
|
||||
atmarp_spaddr_print(netdissect_options *ndo,
|
||||
const struct atmarp_pkthdr *ap, u_short pro)
|
||||
{
|
||||
if (pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL)
|
||||
ND_PRINT((ndo, "<wrong proto type>"));
|
||||
else if (ATMSPROTO_LEN(ap) != 4)
|
||||
ND_PRINT((ndo, "<wrong splen>"));
|
||||
else
|
||||
ND_PRINT((ndo, "%s", ipaddr_string(ndo, ATMSPA(ap))));
|
||||
}
|
||||
|
||||
static void
|
||||
atmarp_print(netdissect_options *ndo,
|
||||
const u_char *bp, u_int length, u_int caplen)
|
||||
@@ -258,18 +306,21 @@ atmarp_print(netdissect_options *ndo,
|
||||
switch (op) {
|
||||
|
||||
case ARPOP_REQUEST:
|
||||
ND_PRINT((ndo, "who-has %s", ipaddr_string(ndo, ATMTPA(ap))));
|
||||
ND_PRINT((ndo, "who-has "));
|
||||
atmarp_tpaddr_print(ndo, ap, pro);
|
||||
if (ATMTHRD_LEN(ap) != 0) {
|
||||
ND_PRINT((ndo, " ("));
|
||||
atmarp_addr_print(ndo, ATMTHA(ap), ATMTHRD_LEN(ap),
|
||||
ATMTSA(ap), ATMTSLN(ap));
|
||||
ND_PRINT((ndo, ")"));
|
||||
}
|
||||
ND_PRINT((ndo, "tell %s", ipaddr_string(ndo, ATMSPA(ap))));
|
||||
ND_PRINT((ndo, " tell "));
|
||||
atmarp_spaddr_print(ndo, ap, pro);
|
||||
break;
|
||||
|
||||
case ARPOP_REPLY:
|
||||
ND_PRINT((ndo, "%s is-at ", ipaddr_string(ndo, ATMSPA(ap))));
|
||||
atmarp_spaddr_print(ndo, ap, pro);
|
||||
ND_PRINT((ndo, " is-at "));
|
||||
atmarp_addr_print(ndo, ATMSHA(ap), ATMSHRD_LEN(ap), ATMSSA(ap),
|
||||
ATMSSLN(ap));
|
||||
break;
|
||||
@@ -286,11 +337,13 @@ atmarp_print(netdissect_options *ndo,
|
||||
case ARPOP_INVREPLY:
|
||||
atmarp_addr_print(ndo, ATMSHA(ap), ATMSHRD_LEN(ap), ATMSSA(ap),
|
||||
ATMSSLN(ap));
|
||||
ND_PRINT((ndo, "at %s", ipaddr_string(ndo, ATMSPA(ap))));
|
||||
ND_PRINT((ndo, "at "));
|
||||
atmarp_spaddr_print(ndo, ap, pro);
|
||||
break;
|
||||
|
||||
case ARPOP_NAK:
|
||||
ND_PRINT((ndo, "for %s", ipaddr_string(ndo, ATMSPA(ap))));
|
||||
ND_PRINT((ndo, "for "));
|
||||
atmarp_spaddr_print(ndo, ap, pro);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -338,7 +391,7 @@ arp_print(netdissect_options *ndo,
|
||||
break;
|
||||
}
|
||||
|
||||
if (!ND_TTEST2(*ar_tpa(ap), PROTO_LEN(ap))) {
|
||||
if (!ND_TTEST2(*TPA(ap), PROTO_LEN(ap))) {
|
||||
ND_PRINT((ndo, "%s", tstr));
|
||||
ND_DEFAULTPRINT((const u_char *)ap, length);
|
||||
return;
|
||||
@@ -373,16 +426,18 @@ arp_print(netdissect_options *ndo,
|
||||
switch (op) {
|
||||
|
||||
case ARPOP_REQUEST:
|
||||
ND_PRINT((ndo, "who-has %s", ipaddr_string(ndo, TPA(ap))));
|
||||
ND_PRINT((ndo, "who-has "));
|
||||
tpaddr_print_ip(ndo, ap, pro);
|
||||
if (isnonzero((const u_char *)THA(ap), HRD_LEN(ap)))
|
||||
ND_PRINT((ndo, " (%s)",
|
||||
linkaddr_string(ndo, THA(ap), linkaddr, HRD_LEN(ap))));
|
||||
ND_PRINT((ndo, " tell %s", ipaddr_string(ndo, SPA(ap))));
|
||||
ND_PRINT((ndo, " tell "));
|
||||
spaddr_print_ip(ndo, ap, pro);
|
||||
break;
|
||||
|
||||
case ARPOP_REPLY:
|
||||
ND_PRINT((ndo, "%s is-at %s",
|
||||
ipaddr_string(ndo, SPA(ap)),
|
||||
spaddr_print_ip(ndo, ap, pro);
|
||||
ND_PRINT((ndo, " is-at %s",
|
||||
linkaddr_string(ndo, SHA(ap), linkaddr, HRD_LEN(ap))));
|
||||
break;
|
||||
|
||||
@@ -393,9 +448,9 @@ arp_print(netdissect_options *ndo,
|
||||
break;
|
||||
|
||||
case ARPOP_REVREPLY:
|
||||
ND_PRINT((ndo, "%s at %s",
|
||||
linkaddr_string(ndo, THA(ap), linkaddr, HRD_LEN(ap)),
|
||||
ipaddr_string(ndo, TPA(ap))));
|
||||
ND_PRINT((ndo, "%s at ",
|
||||
linkaddr_string(ndo, THA(ap), linkaddr, HRD_LEN(ap))));
|
||||
tpaddr_print_ip(ndo, ap, pro);
|
||||
break;
|
||||
|
||||
case ARPOP_INVREQUEST:
|
||||
@@ -405,9 +460,9 @@ arp_print(netdissect_options *ndo,
|
||||
break;
|
||||
|
||||
case ARPOP_INVREPLY:
|
||||
ND_PRINT((ndo,"%s at %s",
|
||||
linkaddr_string(ndo, SHA(ap), linkaddr, HRD_LEN(ap)),
|
||||
ipaddr_string(ndo, SPA(ap))));
|
||||
ND_PRINT((ndo,"%s at ",
|
||||
linkaddr_string(ndo, SHA(ap), linkaddr, HRD_LEN(ap))));
|
||||
spaddr_print_ip(ndo, ap, pro);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
Reference in New Issue
Block a user