mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-14 21:02:33 +08:00
tcpdump: Update to FreeBSD head 2017-04-04
Update tcpdump from Git mirror commit 99a648a912e81e29d9c4c159cbbe263462f2d719 to 642b174daddbd0efd9bb5f242c43f4ab4db6869f.
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
#include <machine/rtems-bsd-user-space.h>
|
||||
|
||||
#ifdef __rtems__
|
||||
#include <machine/rtems-bsd-program.h>
|
||||
#include "rtems-bsd-tcpdump-namespace.h"
|
||||
#endif /* __rtems__ */
|
||||
/*
|
||||
* Copyright 2009 Bert Vermeulen <bert@biot.com>
|
||||
*
|
||||
@@ -21,22 +24,22 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* \summary: USB printer */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <tcpdump-stdinc.h>
|
||||
#include <netdissect-stdinc.h>
|
||||
|
||||
#include <pcap.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "interface.h"
|
||||
#include "netdissect.h"
|
||||
|
||||
|
||||
#if defined(HAVE_PCAP_USB_H) && defined(DLT_USB_LINUX)
|
||||
#include <pcap/usb.h>
|
||||
|
||||
static const char tstr[] = "[|usb]";
|
||||
|
||||
/* returns direction: 1=inbound 2=outbound -1=invalid */
|
||||
static int
|
||||
get_direction(int transfer_type, int event_type)
|
||||
@@ -83,49 +86,49 @@ get_direction(int transfer_type, int event_type)
|
||||
}
|
||||
|
||||
static void
|
||||
usb_header_print(const pcap_usb_header *uh)
|
||||
usb_header_print(netdissect_options *ndo, const pcap_usb_header *uh)
|
||||
{
|
||||
int direction;
|
||||
|
||||
switch(uh->transfer_type)
|
||||
{
|
||||
case URB_ISOCHRONOUS:
|
||||
printf("ISOCHRONOUS");
|
||||
ND_PRINT((ndo, "ISOCHRONOUS"));
|
||||
break;
|
||||
case URB_INTERRUPT:
|
||||
printf("INTERRUPT");
|
||||
ND_PRINT((ndo, "INTERRUPT"));
|
||||
break;
|
||||
case URB_CONTROL:
|
||||
printf("CONTROL");
|
||||
ND_PRINT((ndo, "CONTROL"));
|
||||
break;
|
||||
case URB_BULK:
|
||||
printf("BULK");
|
||||
ND_PRINT((ndo, "BULK"));
|
||||
break;
|
||||
default:
|
||||
printf(" ?");
|
||||
ND_PRINT((ndo, " ?"));
|
||||
}
|
||||
|
||||
switch(uh->event_type)
|
||||
{
|
||||
case URB_SUBMIT:
|
||||
printf(" SUBMIT");
|
||||
ND_PRINT((ndo, " SUBMIT"));
|
||||
break;
|
||||
case URB_COMPLETE:
|
||||
printf(" COMPLETE");
|
||||
ND_PRINT((ndo, " COMPLETE"));
|
||||
break;
|
||||
case URB_ERROR:
|
||||
printf(" ERROR");
|
||||
ND_PRINT((ndo, " ERROR"));
|
||||
break;
|
||||
default:
|
||||
printf(" ?");
|
||||
ND_PRINT((ndo, " ?"));
|
||||
}
|
||||
|
||||
direction = get_direction(uh->transfer_type, uh->event_type);
|
||||
if(direction == 1)
|
||||
printf(" from");
|
||||
ND_PRINT((ndo, " from"));
|
||||
else if(direction == 2)
|
||||
printf(" to");
|
||||
printf(" %d:%d:%d", uh->bus_id, uh->device_address, uh->endpoint_number & 0x7f);
|
||||
ND_PRINT((ndo, " to"));
|
||||
ND_PRINT((ndo, " %d:%d:%d", uh->bus_id, uh->device_address, uh->endpoint_number & 0x7f));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -137,14 +140,15 @@ usb_header_print(const pcap_usb_header *uh)
|
||||
* is the number of bytes actually captured.
|
||||
*/
|
||||
u_int
|
||||
usb_linux_48_byte_print(const struct pcap_pkthdr *h, register const u_char *p)
|
||||
usb_linux_48_byte_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
|
||||
register const u_char *p)
|
||||
{
|
||||
if (h->caplen < sizeof(pcap_usb_header)) {
|
||||
printf("[|usb]");
|
||||
ND_PRINT((ndo, "%s", tstr));
|
||||
return(sizeof(pcap_usb_header));
|
||||
}
|
||||
|
||||
usb_header_print((const pcap_usb_header *) p);
|
||||
usb_header_print(ndo, (const pcap_usb_header *) p);
|
||||
|
||||
return(sizeof(pcap_usb_header));
|
||||
}
|
||||
@@ -159,14 +163,15 @@ usb_linux_48_byte_print(const struct pcap_pkthdr *h, register const u_char *p)
|
||||
* is the number of bytes actually captured.
|
||||
*/
|
||||
u_int
|
||||
usb_linux_64_byte_print(const struct pcap_pkthdr *h, register const u_char *p)
|
||||
usb_linux_64_byte_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
|
||||
register const u_char *p)
|
||||
{
|
||||
if (h->caplen < sizeof(pcap_usb_header_mmapped)) {
|
||||
printf("[|usb]");
|
||||
ND_PRINT((ndo, "%s", tstr));
|
||||
return(sizeof(pcap_usb_header_mmapped));
|
||||
}
|
||||
|
||||
usb_header_print((const pcap_usb_header *) p);
|
||||
usb_header_print(ndo, (const pcap_usb_header *) p);
|
||||
|
||||
return(sizeof(pcap_usb_header_mmapped));
|
||||
}
|
||||
@@ -174,3 +179,6 @@ usb_linux_64_byte_print(const struct pcap_pkthdr *h, register const u_char *p)
|
||||
|
||||
#endif /* defined(HAVE_PCAP_USB_H) && defined(DLT_USB_LINUX) */
|
||||
|
||||
#ifdef __rtems__
|
||||
#include "rtems-bsd-tcpdump-print-usb-data.h"
|
||||
#endif /* __rtems__ */
|
||||
|
Reference in New Issue
Block a user