Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Wireless network programming in Unix (question) Post 302447244 by agama on Sunday 22nd of August 2010 12:34:38 AM
Old 08-22-2010
Quote:
But since most of the available tutorials on unix network programming are more related to ethernet programming, I'm not sure if using it for wireless interfaces would be the same. I would like to know if there's any difference between ethernet and wireless raw socket programming.
If by "ethernet" programming you mean opening a file descriptor and binding it to a socket in order to establish a TCP connection, or send UDP (connectionless) datagrams, then whether the underlying datalink layer is ethernet (802.3) or wireless (802.11) makes no difference. This is commonly what is referred to as "socket programming."

Capturing 'raw' datalink layer packets using something like BPF (Berkeley Packet Filter) doesn't require any special knowledge about the underlying datalink layer as the BPF device interface takes care of the differences. You will need to know how to parse the packets that the filter delivers. I'm assuming that the library you referenced (libpcap) provides a similar interface and from the brief look at the documentation it provides the necessary header files to make the interpretation of the data straight forward. My experience is limited to using BPF on both 802.3 and 802.11, so I cannot speak to your question about libpcap structures; sorry.

Two links that might provide some good information:
http://en.wikipedia.org/wiki/OSI_model The OSI networking model
http://www.gsp.com/cgi-bin/man.cgi?section=9&topic=bpf BPF man page
 

10 More Discussions You Might Find Interesting

1. Linux

question about accepr() in network programming

I'm working on my homework to write a chatroom program. Different users can be on-line at the same and talk to each other. I found that each time I invoked the accept function. A new socket was created. I don't how can I receive message from the client who is already on-line and send it to others.... (0 Replies)
Discussion started by: niukun
0 Replies

2. UNIX for Dummies Questions & Answers

Unix Network Programming

I am going to purchase Unix Network Programming by Stevens. The only question I have is which edition to buy. The older (early 90's) edition, or the newer (late 90's) edition. I know conventional thinking would point to the latest ( and greatest?), but I wanted to get some feedback from the forum.... (3 Replies)
Discussion started by: dangral
3 Replies

3. Programming

Network Programming in Unix

Good day everyone, Please help if you are interested in. I need to do a chat client-server program. Does anyone know where I can get references or sample programs? Thank you very much for your time Eric (2 Replies)
Discussion started by: powermind
2 Replies

4. UNIX for Dummies Questions & Answers

Unix and Linux Network Programming

I want to develop a hybrid IM application which will consist of a chat and an offline messaging (BBS) part. Server must support Multiple connection (concurrent) Arguments should not be hard coded (code will be checked at different machines) No input at the command line Must run in the... (3 Replies)
Discussion started by: never mind
3 Replies

5. Programming

Unix network programming

Hi! I am working on fedora.. trying to execute BSD4.4 client-server program which includes "unp.h" header file... While executing make command, I got error like, " expected " , " , " ; ",or ")" in connect_nonb file...ERROR 1 " I tried to change mode of makefile but I can't get... (4 Replies)
Discussion started by: nisha_vaghela
4 Replies

6. Programming

Unix Network Programming

I have written a client-server program which does some data from a file in server to the client. In this I don't want the client to wait indefinitely if server is not running. For this I am using SELECT system call, in this system call we can specify timings as an argument, which tells the client... (2 Replies)
Discussion started by: naresh046
2 Replies

7. UNIX for Dummies Questions & Answers

How does unix system administration, unix programming, unix network programming differ?

How does unix system administration, unix programming, unix network programming differ? Please help. (0 Replies)
Discussion started by: thulasidharan2k
0 Replies

8. IP Networking

Network programming on UNIX env on windows

Hi, I have to start doing network programming in C/Unix but I have windows installed. Could someone please guide me how to set up the environment best suited for the networking programming? Regards Vinayak (1 Reply)
Discussion started by: vinayakj20
1 Replies

9. Programming

UNIX Network Programming making files problem

I have started reading the book Unix Network Programming, Volume 1: The Sockets Networking API. I downloaded all the source code and the readme says I must make the files. zuro@zuro:~/book/unpv12e$ cd lib zuro@zuro:~/book/unpv12e/lib$ make gcc -g -O2 -D_REENTRANT -Wall -c -o... (5 Replies)
Discussion started by: xuro
5 Replies

10. Programming

UNIX network programming execution problem

I have started reading the book Unix Network Programming, Volume 1: The Sockets Networking API. I downloaded all the source code and performed all the steps present in README file.Now when i compile my first program it give the following error. sainandan@nandan:~/unpv13e/intro$ ./daytimetcpcli... (1 Reply)
Discussion started by: bsainandan
1 Replies
BPF(9)							   BSD Kernel Developer's Manual						    BPF(9)

NAME
bpf -- Berkeley Packet Filter SYNOPSIS
#include <net/bpf.h> void bpfattach(struct ifnet *ifp, u_int dlt, u_int hdrlen); void bpfattach2(struct ifnet *ifp, u_int dlt, u_int hdrlen, struct bpf_if **driverp); void bpfdetach(struct ifnet *ifp); void bpf_tap(struct ifnet *ifp, u_char *pkt, u_int *pktlen); void bpf_mtap(struct ifnet *ifp, struct mbuf *m); void bpf_mtap2(struct bpf_if *bp, void *data, u_int dlen, struct mbuf *m); u_int bpf_filter(const struct bpf_insn *pc, u_char *pkt, u_int wirelen, u_int buflen); int bpf_validate(const struct bpf_insn *fcode, int flen); DESCRIPTION
The Berkeley Packet Filter provides a raw interface, that is protocol independent, to data link layers. It allows all packets on the net- work, even those destined for other hosts, to be passed from a network interface to user programs. Each program may specify a filter, in the form of a bpf filter machine program. The bpf(4) manual page describes the interface used by user programs. This manual page describes the functions used by interfaces to pass packets to bpf and the functions for testing and running bpf filter machine programs. The bpfattach() function attaches a network interface to bpf. The ifp argument is a pointer to the structure that defines the interface to be attached to an interface. The dlt argument is the data link-layer type: DLT_NULL (no link-layer encapsulation), DLT_EN10MB (Ethernet), DLT_IEEE802_11 (802.11 wireless networks), etc. The rest of the link layer types can be found in <net/bpf.h>. The hdrlen argument is the fixed size of the link header; variable length headers are not yet supported. The bpf system will hold a pointer to ifp->if_bpf. This vari- able will set to a non-NULL value when bpf requires packets from this interface to be tapped using the functions below. The bpfattach2() function allows multiple bpf instances to be attached to a single interface, by registering an explicit if_bpf rather than using ifp->if_bpf. It is then possible to run tcpdump(1) on the interface for any data link-layer types attached. The bpfdetach() function detaches a bpf instance from an interface, specified by ifp. The bpfdetach() function should be called once for each bpf instance attached. The bpf_tap() function is used by an interface to pass the packet to bpf. The packet data (including link-header), pointed to by pkt, is of length pktlen, which must be a contiguous buffer. The ifp argument is a pointer to the structure that defines the interface to be tapped. The packet is parsed by each processes filter, and if accepted, it is buffered for the process to read. The bpf_mtap() function is like bpf_tap() except that it is used to tap packets that are in an mbuf chain, m. The ifp argument is a pointer to the structure that defines the interface to be tapped. Like bpf_tap(), bpf_mtap() requires a link-header for whatever data link layer type is specified. Note that bpf only reads from the mbuf chain, it does not free it or keep a pointer to it. This means that an mbuf con- taining the link-header can be prepended to the chain if necessary. A cleaner interface to achieve this is provided by bpf_mtap2(). The bpf_mtap2() function allows the user to pass a link-header data, of length dlen, independent of the mbuf m, containing the packet. This simplifies the passing of some link-headers. The bpf_filter() function executes the filter program starting at pc on the packet pkt. The wirelen argument is the length of the original packet and buflen is the amount of data present. The buflen value of 0 is special; it indicates that the pkt is actually a pointer to an mbuf chain (struct mbuf *). The bpf_validate() function checks that the filter code fcode, of length flen, is valid. RETURN VALUES
The bpf_filter() function returns -1 (cast to an unsigned integer) if there is no filter. Otherwise, it returns the result of the filter program. The bpf_validate() function returns 0 when the program is not a valid filter program. SEE ALSO
tcpdump(1), bpf(4) HISTORY
The Enet packet filter was created in 1980 by Mike Accetta and Rick Rashid at Carnegie-Mellon University. Jeffrey Mogul, at Stanford, ported the code to BSD and continued its development from 1983 on. Since then, it has evolved into the Ultrix Packet Filter at DEC, a STREAMS NIT module under SunOS 4.1, and BPF. AUTHORS
Steven McCanne, of Lawrence Berkeley Laboratory, implemented BPF in Summer 1990. Much of the design is due to Van Jacobson. This manpage was written by Orla McGann. BSD
December 13, 2006 BSD
All times are GMT -4. The time now is 10:53 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy