Subject: Re: [iproute2] IPoIB link layer address bug

From: Stephen Hemminger <[email-masked]>
Date: Tue, 21 Mar 2006 15:56:17 -0800

On Thu, 16 Mar 2006 17:24:41 -0500 (EST)
James Lentini <[email-masked]> wrote:

> 
> The ip(8) command has a bug when dealing with IPoIB link layer 
> addresses. Specifically it does not correctly handle the addition of 
> new entries in the neighbor/arp table. For example, this command will 
> fail:
> 
> ip neigh add 192.168.0.138 lladdr 00:00:04:04:fe:80:00:00:00:00:00:00:00:01:73:00:00:00:8a:91 nud permanent dev ib0
> 
> An IPoIB link layer address is 20-bytes (see 
> http://www.ietf.org/internet-drafts/draft-ietf-ipoib-ip-over-infiniband-09.txt, 
> section 9.1.1).
> 
> The command line parsing code expects link layer addresses to be a 
> maximum of 16-bytes. Addresses over 16-bytes are truncated.
> 
> This patch (against the iproute2 cvs repository) fixes the problem:
> 

Okay, but there are number of other places in iproute2 that call ll_addr_a2n()
with ifr.ifr_hwaddr.sa_data. And that is 14 bytes.  If you want to fix those
it will be harder since it would increase the sizeof(struct sockaddr) and potentially
break compatibility.