Hi, >>> I would like to hear from you for suggestions on how libpcap can be >>> updated to libdlpi. I have a couple of possible approaches to make >>> this addition but they may not necessarily be the best approach: >>> >>> 1) Introduce a new pcap-libdlpi-solaris.c file which will handle all the >>> versions of Solaris with libdlpi. The existing pcap-dlpi.c will continue >>> working for pre-libdlpi versions of Solaris. >>> >>> 2) Continue with the use of ifdef #HAVE_SOLARIS approach in the existing >>> pcap-dlpi.c file to call libdlpi functions for releases that support >>> libdlpi. >>> >>> 3) Instead of using libdlpi, add support to open different >>> directories, i.e /dev/net, /dev/ipnet, and add other Solaris-specific >>> ioctls to the existing pcap-dlpi.c file under #ifdef protection.
I have developed a prototype with the option 1 proposed. I would like to hear from you if you have any comments or feedback. The changes made to the libpcap library can be seen at the link below: http://cr.opensolaris.org/~sagun/libpcap/ I will be adding a readme file with these changes when providing the patch later. I've compiled and ran this version of libpcap with tcpdump and wireshark on a system with and without clearview-UV. As mentioned before once the UV component of Project Clearview (http://opensolaris.org/os/project/clearview/uv/) integrates into Solaris, libpcap will allow you to capture packets at non IP-layers as well. The present libpcap library enumerates available network devices on Solaris with find_alldevs() using SIOCCLGIFCONF flag. Therefore, only network devices which have been plumbed by IP are listed. In this version of libpcap, find_alldevs() calls pcap_platform_finddevs() to find the rest unplumbed network devices. Since pcap_platform_finddevs() is implemented using of dlpi_walk(), which will be provided with libdlpi when UV integrates, the latest version of SXDE/SXCE will not be able to support this feature. Thank you for reviewing, Sagun
