aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-igmp.c
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2006-10-28 21:52:38 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2006-10-28 21:52:38 +0000
commitd199875c177c6d67d68cdd01d710109c8e555256 (patch)
tree39a3df7c6c8764bfd26d6fd9e594a87d5b309fbf /epan/dissectors/packet-igmp.c
parent590251d66e9898104b51ea84d88f975e2289bca6 (diff)
Based on RFC3488. This is a setup for RGMP dissection, a simple protocol bolted on IGMP.
svn path=/trunk/; revision=19722
Diffstat (limited to 'epan/dissectors/packet-igmp.c')
-rw-r--r--epan/dissectors/packet-igmp.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/epan/dissectors/packet-igmp.c b/epan/dissectors/packet-igmp.c
index e16f94324d..17bdb8b87a 100644
--- a/epan/dissectors/packet-igmp.c
+++ b/epan/dissectors/packet-igmp.c
@@ -19,7 +19,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/*
IGMP is defined in the following RFCs
@@ -30,7 +30,7 @@
RFC3376 Version 3
Size in bytes for each packet
- type RFC988 RFC1054 RFC2236 RFC3376 DVMRP MRDISC MSNIP IGAP
+ type RFC988 RFC1054 RFC2236 RFC3376 DVMRP MRDISC MSNIP IGAP RGMP
v0 v1 v2 v3 v1/v3
0x01 20
0x02 20
@@ -53,6 +53,10 @@
0x40 ??c
0x41 ??c
0x42 ??c
+ 0xfc 8
+ 0xfd 8
+ 0xfe 8
+ 0xff 8
* Differs in second byte of protocol. Always 0 in V1
@@ -93,6 +97,12 @@
IGAP : Internet Group membership Authentication Protocol
draft-hayashi-igap-03.txt
+ d RGMP Protocol see packet-rgmp.c
+
+ RGMP : Router-port Group Management Protocol
+ RFC3488
+ TTL == 1 and IP.DST==224.0.0.25 for all packets
+
*/
#ifdef HAVE_CONFIG_H
@@ -112,6 +122,7 @@
#include "packet-mrdisc.h"
#include "packet-msnip.h"
#include "packet-igap.h"
+#include "packet-rgmp.h"
static int proto_igmp = -1;
static int hf_type = -1;
@@ -164,6 +175,7 @@ static int ett_mtrace_block = -1;
#define MC_ALL_ROUTERS 0xe0000002
#define MC_ALL_IGMPV3_ROUTERS 0xe0000016
+#define MC_RGMP 0xe0000019
#define IGMP_V0_CREATE_GROUP_REQUEST 0x01
@@ -892,6 +904,16 @@ dissect_igmp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
offset = dissect_igap(tvb, pinfo, parent_tree, offset);
break;
+ case IGMP_RGMP_HELLO:
+ case IGMP_RGMP_BYE:
+ case IGMP_RGMP_JOIN:
+ case IGMP_RGMP_LEAVE:
+ dst = g_htonl(MC_RGMP);
+ if (!memcmp(pinfo->dst.data, &dst, 4)) {
+ offset = dissect_rgmp(tvb, pinfo, parent_tree, offset);
+ }
+ break;
+
default:
offset = dissect_igmp_unknown(tvb, pinfo, tree, type, offset);
break;