From owner-freebsd-hackers@FreeBSD.ORG Sat Feb 12 20:16:03 2011 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6465106566C; Sat, 12 Feb 2011 20:16:03 +0000 (UTC) (envelope-from dudu@dudu.ro) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 1AE358FC08; Sat, 12 Feb 2011 20:16:02 +0000 (UTC) Received: by wyf19 with SMTP id 19so3597497wyf.13 for ; Sat, 12 Feb 2011 12:16:02 -0800 (PST) Received: by 10.216.173.147 with SMTP id v19mr1964308wel.102.1297541761529; Sat, 12 Feb 2011 12:16:01 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.185.9 with HTTP; Sat, 12 Feb 2011 12:15:21 -0800 (PST) In-Reply-To: <4D5660D9.2040002@herveybayaustralia.com.au> References: <4D54E39D.1000505@herveybayaustralia.com.au> <4D54F0B0.7010503@freebsd.org> <4D550300.5090000@herveybayaustralia.com.au> <4D5565C7.1010809@freebsd.org> <4D55CE5A.8040902@herveybayaustralia.com.au> <4D55E015.3010709@freebsd.org> <20110212103923.3098f6b3@ernst.jennejohn.org> <4D5660D9.2040002@herveybayaustralia.com.au> From: Vlad Galu Date: Sat, 12 Feb 2011 22:15:21 +0200 Message-ID: To: Da Rock Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-hackers@freebsd.org Subject: Re: [maybe spam] Re: linux PF_PACKET compatibility X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Feb 2011 20:16:03 -0000 On Sat, Feb 12, 2011 at 12:28 PM, Da Rock < freebsd-hackers@herveybayaustralia.com.au> wrote: > On 02/12/11 19:39, Gary Jennejohn wrote: > >> On Fri, 11 Feb 2011 17:19:17 -0800 >> Julian Elischer wrote: >> >> >> >>> On 2/11/11 4:03 PM, Da Rock wrote: >>> >>> >>>> Unfortunately this software uses this family instead of pcap or bpf. >>>> So when built it errors. >>>> >>>> I guess if I am to use this app I will have to rewrite the way it >>>> uses the network stack. >>>> >>>> >>> l2tp runs over UDP packets (port 1701 (like the starship enterprise)) >>> I have no idea why they want raw packets. >>> >>> >>> >> Ther's a sendarp() routine which uses PF_PACKET to directly access the >> network driver and bypass the stack. Lazy Linuxers who have no idea >> or don't care that other operating systems exist. >> >> >> > Indeed. Is it possible to leverage another compatible routine? I haven't > had a look yet as I just read the message, but can I (after checking return > values and arguments) just drop in another arp routine? Or are they simply > incompatible across the board? > > From what I understand they should all be essentially doing the same thing, > but I could be wrong on this. Alternatively would I have to basically > rewrite the arp.c to be posix compatible (for portability)? > > Cheers > You only need to rewrite the sendarp() routine, using a BPF device descriptor instead of the PF_PACKET socket descriptor. Take a look at libdnet[1] and rbootd[2]'s source. [1] http://libdnet.sf.net/ [2] http://ftp.fr.openbsd.org/pub/OpenBSD/src/usr.sbin/rbootd/ You will need, however, to fill the source with #ifdefs to compensate the fact that Linux has assigned different names and sizes to the members of struct ether_header and arphdr (and has a _BSD_SOURCE knob to accomodate compiling BSD-based software).* * -- Good, fast & cheap. Pick any two.