Subject: Re: [PATCH] iproute2: support xfrm upper protocol gre key

From: Stephen Hemminger <[email-masked]>
Date: Tue, 23 Nov 2010 10:13:02 -0800

On Tue, 23 Nov 2010 18:44:44 +0200
Timo Teräs <[email-masked]> wrote:

> On 11/23/2010 06:24 PM, Stephen Hemminger wrote:
> > On Tue, 23 Nov 2010 17:02:39 +0200
> > Timo Teräs <[email-masked]> wrote:
> > 
> >> +	case IPPROTO_GRE:
> >> +		if (sel->sport_mask || sel->dport_mask) {
> >> +			struct in_addr key;
> >> +			key.s_addr = htonl((ntohs(sel->sport) << 16) + ntohs(sel->dport));
> >> +			inet_ntop(AF_INET, &key, abuf, sizeof(abuf));
> >> +			fprintf(fp, "key %s ", abuf);
> >> +		}
> > 
> > The GRE key is not really an IPv4 address. Why should the utilities
> > use IPv4 address manipulation to format/scan it.  It makes more sense
> > to me to just use u32 an do the necessary ntohl.
> 
> This is pretty much how iptunnel.c does it, so I copied the code. Would
> you prefer to format it as single u32 number? Or use something else for
> formatting it similar to IPv4?
> 
> In either case, we should change iptunnel.c to match ipxfrm.c. It'll be
> easier if both parts handling the gre key treat it equivalently.
> 
> I think Cisco does indeed treat it as u32 number in the configurations.
> So I'm okay updating this patch, and fixing iptunnel.c side too. We
> might still want to keep the parsing of ipv4 format to keep backwards
> compatibility.

My preference would be to take both dotted quad and a single
number.

--