Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 May 1999 07:39:17 -0400
From:      "Andrew Chalupka" <andcha@nortelnetworks.com>
To:        net@freebsd.org
Subject:   RE: RAW IP socket for IGMP packet..
Message-ID:  <C51ED84B6F47D211917A0000F8BCBD11E7257B@zcard00g.ca.nortel.com>

next in thread | raw e-mail | index | archive | help
The problem here is that IGMP packets (and any other IP packets addressed to
a multicast group), are also addressed to a group address *at the data link
layer*.  Normally, the kernel takes care of telling the data link layer to
accept group-addressed frames when you join a mcast group.  However, simply
creating a raw socket with IPPROTO_IGMP is probably not sufficient to do
that.  

Your best bet is to use libpcap to grab the IGMP packets.

Andrew 

> -----Original Message-----
> From:	Youngsu Chae [SMTP:yschae@cc.gatech.edu]
> Sent:	Tuesday, May 18, 1999 4:44 AM
> To:	net@freebsd.org
> Subject:	RAW IP socket for IGMP packet..
> 
> Hi all,
> 
> I've been struggling with raw ip socket to pick up IP/IGMP packet.
> As I understand from the 'raw_ip.c' source code, if the following three
> conditions are satisfied
> 
> 1) open a raw ip socket with  protocol value as IPPROTO_IGMP,
> 2) do not bind local address,
> 3) do not specify foreign address,
> 
> then, the socket should get all the IP/IGMP packets with whatever
> destination group addresses.
> But, I couldn't get any IGMP packets..
> The only way I can get the IP/IGMP packet is to subscribe to a specific
> group.
> That gives me only the IGMP packets destined to the group.
> How can I get all IGMP packets with raw ip socket?
> I've also tested with protocol value IPPROTO_IP(0).
> In this case it should pick up all IP packets except TCP/UDP (those
> packets are handled only in kernel).
> It picks up ICMP packets but not IGMPs.
> 
> 
> The following is the code for opening raw IP socket for IGMP..
>   /* get an IGMP socket */
>   if ((igmp_socket = socket(AF_INET,SOCK_RAW,IPPROTO_IGMP)) < 0){
>     panic ("socket() failed!");
>   }
> 
>   k_hdr_include(TRUE);    /* turn on header include option */
>   k_set_rcvbuf(256*1024,48*1024); /* lots of input buffering        */
>   k_set_ttl(1);  /* restrict multicasts to one hop */
>   k_set_loop(FALSE);  /* disable multicast loopback     */
> 
> 
> Thanks,
> 
> Y.Chae
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-net" in the body of the message


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C51ED84B6F47D211917A0000F8BCBD11E7257B>