/* \summary: USB printer */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
+#define ND_LONGJMP_FROM_TCHECK
#include "netdissect.h"
#include "extract.h"
case URB_BULK:
case URB_CONTROL:
case URB_ISOCHRONOUS:
- switch(event_type)
- {
+ switch(event_type) {
case URB_SUBMIT:
direction = 2;
break;
}
break;
case URB_INTERRUPT:
- switch(event_type)
- {
+ switch(event_type) {
case URB_SUBMIT:
direction = 1;
break;
int direction;
uint8_t transfer_type, event_type;
- transfer_type = EXTRACT_U_1(uh->transfer_type);
- switch(transfer_type)
- {
+ ndo->ndo_protocol = "usb";
+
+ nd_print_protocol_caps(ndo);
+ if (ndo->ndo_qflag)
+ return;
+
+ ND_PRINT(" ");
+ transfer_type = GET_U_1(uh->transfer_type);
+ switch(transfer_type) {
case URB_ISOCHRONOUS:
ND_PRINT("ISOCHRONOUS");
break;
ND_PRINT(" ?");
}
- event_type = EXTRACT_U_1(uh->event_type);
- switch(event_type)
- {
+ event_type = GET_U_1(uh->event_type);
+ switch(event_type) {
case URB_SUBMIT:
ND_PRINT(" SUBMIT");
break;
ND_PRINT(" from");
else if(direction == 2)
ND_PRINT(" to");
- ND_PRINT(" %u:%u:%u", EXTRACT_HE_U_2(uh->bus_id), EXTRACT_U_1(uh->device_address), EXTRACT_U_1(uh->endpoint_number) & 0x7f);
+ ND_PRINT(" %u:%u:%u", GET_HE_U_2(uh->bus_id),
+ GET_U_1(uh->device_address),
+ GET_U_1(uh->endpoint_number) & 0x7f);
}
/*
* 'h->len' is the length of the packet off the wire, and 'h->caplen'
* is the number of bytes actually captured.
*/
-u_int
-usb_linux_48_byte_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
- const u_char *p)
+void
+usb_linux_48_byte_if_print(netdissect_options *ndo,
+ const struct pcap_pkthdr *h _U_, const u_char *p)
{
- ndo->ndo_protocol = "usb_linux_48_byte_if";
- if (h->caplen < sizeof(pcap_usb_header)) {
- nd_print_trunc(ndo);
- return(sizeof(pcap_usb_header));
- }
+ ndo->ndo_protocol = "usb_linux_48_byte";
+ ND_TCHECK_LEN(p, sizeof(pcap_usb_header));
+ ndo->ndo_ll_hdr_len += sizeof (pcap_usb_header);
usb_header_print(ndo, (const pcap_usb_header *) p);
-
- return(sizeof(pcap_usb_header));
}
#ifdef DLT_USB_LINUX_MMAPPED
* 'h->len' is the length of the packet off the wire, and 'h->caplen'
* is the number of bytes actually captured.
*/
-u_int
-usb_linux_64_byte_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
- const u_char *p)
+void
+usb_linux_64_byte_if_print(netdissect_options *ndo,
+ const struct pcap_pkthdr *h _U_, const u_char *p)
{
- ndo->ndo_protocol = "usb_linux_64_byte_if";
- if (h->caplen < sizeof(pcap_usb_header_mmapped)) {
- nd_print_trunc(ndo);
- return(sizeof(pcap_usb_header_mmapped));
- }
+ ndo->ndo_protocol = "usb_linux_64_byte";
+ ND_TCHECK_LEN(p, sizeof(pcap_usb_header_mmapped));
+ ndo->ndo_ll_hdr_len += sizeof (pcap_usb_header_mmapped);
usb_header_print(ndo, (const pcap_usb_header *) p);
-
- return(sizeof(pcap_usb_header_mmapped));
}
#endif /* DLT_USB_LINUX_MMAPPED */