ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
You should investigate the usage of the SOCK_RAW type of socket construction (man socket). My understanding of it is that it will allow direct communications to the driver, so what whatever I/O occurs is up to you (after the ethernet and MAC layer of course).
i have read the manual of socket. but i think there is a little different from you.
i consider the sock_raw is based on ip yet, so i can generate all type of packet based
on ip protocol. but, what is about the others.
are you true we can send packet not based on ip using the sock_raw.
I don't have any code handy where I currently work. I used raw sockets a long time ago (in a galaxy far far away, no wait that is another story) in order to be able to send/receive data packets for a very simply MAC layer hub tester. Basically I simply used the socket() function "socket(int domain, int type, int protocol)" with the values of PF_PACKET for domain, and SOCK_RAW for type (I don't remember which value I used for the protocol, sorry).
Take a look at the socket, packet, and protocol man pages - they should be able to point you in the right direction.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.