On Feb 17, 2014, at 12:45 AM, Anders Broman <[email protected]> wrote:

> On Feb 17, 2014, at 08:29 AM, Rahul Rohit wrote:
> 
>> If the handoff function includes all  those protocols to which the packets 
>> can be forwarded for dissection from the current protocol, why the handoff 
>> function for sctp does not contain the handle of >NBAP protocol( As 
>> depending on the port value the packets from sctp can be forwarded to NBAP 
>> protocols , why  NBAP handle is not  in sctp handoff function ) ??
>  
> Because that’s not the way it works J
>  
> proto_reg_handoff_sctp()
>  
> Is called so the SCTP dissector can do its own registrations.
>  
> In void proto_register_sctp(void)
>  
>  
> The SCTP dissector registers two dissector tables.
> sctp_port_dissector_table = register_dissector_table("sctp.port", "SCTP 
> port", FT_UINT16, BASE_DEC);
> sctp_ppi_dissector_table  = register_dissector_table("sctp.ppi",  "SCTP 
> payload protocol identifier", FT_UINT32, BASE_HEX);
>  
> Any dissector wanting to be called from the SCTP dissector needs to register 
> in those tables in its own handoff routine. 

I.e., if protocol X has a payload that could be protocol Y, or Z, or W, 
depending on some value known to protocol X, it is not the responsibility of 
the dissector for protocol X's to know about protocols Y, Z, and W, it's the 
responsibility of the dissectors for protocols Y, Z, and W to know about 
protocol X and the appropriate values.

Therefore, the SCTP dissector doesn't need to know about the protocols that run 
on top of it; those protocols need to know about the SCTP port and PPI fields 
and the values that their protocols use.

That way, when a dissector for a new protocol is added, you don't have to 
change the dissector for the protocols atop which that protocol runs, you only 
have to add the new dissector.  For example, if some protocol uses the Ethernet 
type 0xDEAD, you can add a dissector for that protocol without having to modify 
the "Ethertype" dissector; you just have that dissector register its handle in 
the "ethertype" dissector table, with the value 0xDEAD.
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to