NAME
pim_dissect - Protocol Independent Multicast dissect function
SYNOPSIS
data,offset=pim_dissect(pkt,offset)
PIM_HELLO = 0
PIM_REGISTER = 1
PIM_REGISTER_STOP = 2
PIM_JOIN_PRUNE = 3
PIM_BOOTSTRAP = 4
PIM_ASSERT = 5
PIM_GRAFT = 6
PIM_GRAFT_ACK = 7
PIM_CANDIDATE = 8
DESCRIPTION
SEE ALSOdissect Protocol Independent Multicast
just type PIM_HELLO is dissectable at the moment
PIM Header Format ( fixed-part )
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|PIM Ver| Type | Reserved | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
reference RFC 2362
if type == PIM_HELLO
Hello Message Format
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Option Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Value |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . |
| . |
| . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Type | Option Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Value |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
funtion accepts two arguments:
pkt is a packet reference containing the whole packet to be dissect
offset is the position inside packet to start dissectionfuntion return two values:
data is a variable long tuple:
pim version
type
reserved
checksum
if type == PIM_HELLO a list with options follows
offset could be the original offset plus 4
or the end of the packet if type equals PIM_HELLO
pim_opn_dissect