[RTnet-users] Packet Socket Support / Race Condition Fixes
Brought to you by:
bet-frogger,
kiszka
From: Jan K. <ki...@rt...> - 2003-10-28 16:37:13
|
Hello everyone, here is the regular update on the latest CVS checkins. You will now find a nice new feature there: packet sockets (PF_PACKET). This means that you can send and receive your own layer 3 packets now (besides IP, ARP, and RTmac). The interface is meant for user protocols, not for sniffing (yet). This means that you cannot register to all packets (ETH_P_ALL), and there can always be only one listener per protocol. See examples/raw_packets for a demonstration. While adding this feature, some race conditions were discovered which caused troubles (only!) during shutdown of applications. They are hopefully fixed now. Unfixed are races during interface (NIC) shutdowns. So, please terminate all your RTnet applications first before closing a NIC. When shutting down an application, close the socket first before terminating any tasks which block on the socket. At this chance I decided to disable the static socket interface (rt_ssocket_XXX). It was not updated for several releases now and should not have been used in any project (please yell to me if I'm wrong!). I see no advantage of such an interface, especially as the file descriptor lookup has also been accelerated with this checkin (take a look at rtnet_socket.h and socket.c if you are interested in details). Please note that some of the RTnet examples incorrectly checked the descriptor return by rt_socket against zero. Zero is a valid descriptor and will be returned now as the very first value! Based on the now available feature set, a new release should be created as soon as this version appears to be stable. So, please give it a try and report any bugs! So far, Jan |