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

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

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.