• J
    ipv4: Fix IP timestamp option (IPOPT_TS_PRESPEC) handling in ip_options_echo() · 8628bd8a
    Jan Luebbe 提交于
    The current handling of echoed IP timestamp options with prespecified
    addresses is rather broken since the 2.2.x kernels. As far as i understand
    it, it should behave like when originating packets.
    
    Currently it will only timestamp the next free slot if:
     - there is space for *two* timestamps
     - some random data from the echoed packet taken as an IP is *not* a local IP
    
    This first is caused by an off-by-one error. 'soffset' points to the next
    free slot and so we only need to have 'soffset + 7 <= optlen'.
    
    The second bug is using sptr as the start of the option, when it really is
    set to 'skb_network_header(skb)'. I just use dptr instead which points to
    the timestamp option.
    
    Finally it would only timestamp for non-local IPs, which we shouldn't do.
    So instead we exclude all unicast destinations, similar to what we do in
    ip_options_compile().
    Signed-off-by: NJan Luebbe <jluebbe@debian.org>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    8628bd8a
ip_options.c 14.9 KB