From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 22:18:12 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A9A01065696; Sat, 13 Nov 2010 22:18:12 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4973F8FC16; Sat, 13 Nov 2010 22:18:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oADMIC37061723; Sat, 13 Nov 2010 22:18:12 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oADMIC9n061721; Sat, 13 Nov 2010 22:18:12 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011132218.oADMIC9n061721@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 13 Nov 2010 22:18:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215267 - user/weongyo/usb/usb.sbin/usbdump X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 22:18:12 -0000 Author: weongyo Date: Sat Nov 13 22:18:12 2010 New Revision: 215267 URL: http://svn.freebsd.org/changeset/base/215267 Log: usbdump(8) now handles endians correctly. Modified: user/weongyo/usb/usb.sbin/usbdump/usbdump.c Modified: user/weongyo/usb/usb.sbin/usbdump/usbdump.c ============================================================================== --- user/weongyo/usb/usb.sbin/usbdump/usbdump.c Sat Nov 13 22:10:26 2010 (r215266) +++ user/weongyo/usb/usb.sbin/usbdump/usbdump.c Sat Nov 13 22:18:12 2010 (r215267) @@ -256,6 +256,15 @@ print_apacket(const struct usbpf_xhdr *h const char *ptr = payload; char buf[64]; + /* A packet from the kernel is based on little endian byte order. */ + up->up_busunit = le32toh(up->up_busunit); + up->up_flags = le32toh(up->up_flags); + up->up_status = le32toh(up->up_status); + up->up_length = le32toh(up->up_length); + up->up_frames = le32toh(up->up_frames); + up->up_error = le32toh(up->up_error); + up->up_interval = le32toh(up->up_interval); + tv.tv_sec = hdr->uh_tstamp.ut_sec; tv.tv_usec = hdr->uh_tstamp.ut_frac; tm = localtime(&tv.tv_sec); @@ -275,7 +284,7 @@ print_apacket(const struct usbpf_xhdr *h if (verbose >= 1) { for (x = 0; x < up->up_frames; x++) { - framelen = *((const u_int32_t *)ptr); + framelen = le32toh(*((const u_int32_t *)ptr)); ptr += sizeof(u_int32_t); printf(" frame[%u] len %d\n", x, framelen); assert(framelen < (1024 * 4)); @@ -308,7 +317,7 @@ print_packets(const char *data, const in print_apacket(hdr, up, ptr); pkt_captured++; for (x = 0; x < up->up_frames; x++) { - framelen = *((const u_int32_t *)ptr); + framelen = le32toh(*((const u_int32_t *)ptr)); ptr += sizeof(u_int32_t) + framelen; } }