Ethereal-dev: Re: [ethereal-dev] ripng decode + IPv6 enhancement

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

Date: Wed, 13 Oct 1999 11:13:13 +0900
>> 	Attached please find:
>> 	- IPv6 extension header decoding
>> 	- RIPng decoding
>> 	- compilation stabilization for IPv6 library
>> 	packet-ripng.[ch] are added.
>I've checked them in (with a change of "u_int32_t", or whatever the type
>was, in "packet-ipv6.c" to "guint32"; Solaris 2.5.1 doesn't declare that
>type).

	Sorry, here's one more patch against latest CVS tree.
	I forgot one ntohs().
	Would you like a packet dump file with ripng packets?

itojun


Index: packet-ipv6.c
===================================================================
RCS file: /cvsroot/ethereal/packet-ipv6.c,v
retrieving revision 1.16
diff -c -r1.16 packet-ipv6.c
*** packet-ipv6.c	1999/10/12 23:12:01	1.16
--- packet-ipv6.c	1999/10/13 01:59:37
***************
*** 79,84 ****
--- 79,87 ----
  	rthdr_tree = proto_item_add_subtree(ti, ETT_IPv6);
  
  	proto_tree_add_text(rthdr_tree,
+ 	    offset + offsetof(struct ip6_rthdr, ip6r_nxt), 1,
+ 	    "Next header: 0x%02x", rt.ip6r_nxt);
+ 	proto_tree_add_text(rthdr_tree,
  	    offset + offsetof(struct ip6_rthdr, ip6r_len), 1,
  	    "Length: %d (%d bytes)", rt.ip6r_len, len);
  	proto_tree_add_text(rthdr_tree,
***************
*** 151,158 ****
  	    "%s Header", optname);
  	dstopt_tree = proto_item_add_subtree(ti, ETT_IPv6);
  
  	proto_tree_add_text(dstopt_tree,
! 	    offset + offsetof(struct ip6_dest, ip6d_len), 1,
  	    "Length: %d (%d bytes)", ext.ip6e_len, len);
  
  	p = (u_char *)(pd + offset + 2);
--- 154,164 ----
  	    "%s Header", optname);
  	dstopt_tree = proto_item_add_subtree(ti, ETT_IPv6);
  
+ 	proto_tree_add_text(dstopt_tree,
+ 	    offset + offsetof(struct ip6_ext, ip6e_nxt), 1,
+ 	    "Next header: 0x%02x", ext.ip6e_nxt);
  	proto_tree_add_text(dstopt_tree,
! 	    offset + offsetof(struct ip6_ext, ip6e_len), 1,
  	    "Length: %d (%d bytes)", ext.ip6e_len, len);
  
  	p = (u_char *)(pd + offset + 2);
***************
*** 187,193 ****
  		char *rta;
  
  		if (p[1] == 2) {
! 		    switch (*(guint16 *)&p[2]) {
  		    case IP6OPT_RTALERT_MLD:
  			rta = "MLD";
  			break;
--- 193,199 ----
  		char *rta;
  
  		if (p[1] == 2) {
! 		    switch (ntohs(*(guint16 *)&p[2])) {
  		    case IP6OPT_RTALERT_MLD:
  			rta = "MLD";
  			break;
***************
*** 278,284 ****
  
      proto_tree_add_text(ipv6_tree,
  		offset + offsetof(struct ip6_hdr, ip6_nxt), 1,
! 		"Next Header: %d", ipv6.ip6_nxt);
  
      proto_tree_add_text(ipv6_tree,
  		offset + offsetof(struct ip6_hdr, ip6_hlim), 1,
--- 284,290 ----
  
      proto_tree_add_text(ipv6_tree,
  		offset + offsetof(struct ip6_hdr, ip6_nxt), 1,
! 		"Next header: 0x%02x", ipv6.ip6_nxt);
  
      proto_tree_add_text(ipv6_tree,
  		offset + offsetof(struct ip6_hdr, ip6_hlim), 1,