Ethereal-dev: Re: [ethereal-dev] Re: Adding NetInfo (ONC RPC proto) support to ethereal

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

From: Guy Harris <gharris@xxxxxxxxxxxx>
Date: Tue, 4 Jan 2000 23:09:23 -0800
> What is the protocol to follow to get patches incorporated into
> Ethereal?

Post the diffs and wait for somebody to commit them.

> ***************
> *** 836,848 ****
>   		conversation = find_conversation(&null_address, &pi.dst,
>   		    pi.ptype, pi.srcport, pi.destport);
>   		if (conversation == NULL) {
> - 			conversation = find_conversation(&null_address,
> - 				&pi.dst, pi.ptype, 111, pi.destport);
>   			/* We haven't seen an RPC call for that conversation,
>   			   so we can't check for a reply to that call. */
> ! 			if (conversation == NULL) {
> ! 				return FALSE;
> ! 			}
>   		}
>   
>   		/* The XIDs of the call and reply must match. */
> --- 836,844 ----
>   		conversation = find_conversation(&null_address, &pi.dst,
>   		    pi.ptype, pi.srcport, pi.destport);
>   		if (conversation == NULL) {
>   			/* We haven't seen an RPC call for that conversation,
>   			   so we can't check for a reply to that call. */
> ! 			return FALSE;
>   		}
>   
>   		/* The XIDs of the call and reply must match. */

Yes, port 111 is the well-known port for the portmapper under TCP and
UDP, but is there a way of doing this without wiring that in?  (ONC RPC
can run atop other transports, although I don't know how often it's run
over, say, the OSI transport protocols.)

> ***************
> *** 67,322 ****
>   
>   static struct true_false_string yesno = { "Yes", "No" };
>   
> - /* Stolen from packet-rpc.c:dissect_rpc_uint32() */
> - int
> - dissect_rpc_guint32_val(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, char* name, char* type, guint32 * val)
> - {
> -         guint32 value;
> - 
> -         if (!BYTES_ARE_IN_FRAME(offset,4)) return offset;
> -         value = EXTRACT_UINT(pd, offset+0);
> - 
> -         if (tree && name) {
> -                 proto_tree_add_text(tree, offset, 4,
> -                 "%s: %u", name, value);
> -         }
> - 
> -         offset += 4;
> -         *val = value;
> -         return offset;
> - }

Hmm.  It's a bit ugly to have a copy of "dissect_rpc_uint32()" here;
perhaps "dissect_rpc_guint32_val()" should be moved to "packet-rpc.c",
and "dissect_rpc_uint32()" made a wrapper around it that throws away the
value?  Uwe?