|
@@ -882,7 +882,7 @@ static void ipv6_push_rthdr4(struct sk_buff *skb, u8 *proto,
|
|
(hops - 1) * sizeof(struct in6_addr));
|
|
(hops - 1) * sizeof(struct in6_addr));
|
|
|
|
|
|
sr_phdr->segments[0] = **addr_p;
|
|
sr_phdr->segments[0] = **addr_p;
|
|
- *addr_p = &sr_ihdr->segments[hops - 1];
|
|
|
|
|
|
+ *addr_p = &sr_ihdr->segments[sr_ihdr->segments_left];
|
|
|
|
|
|
#ifdef CONFIG_IPV6_SEG6_HMAC
|
|
#ifdef CONFIG_IPV6_SEG6_HMAC
|
|
if (sr_has_hmac(sr_phdr)) {
|
|
if (sr_has_hmac(sr_phdr)) {
|
|
@@ -1174,7 +1174,7 @@ struct in6_addr *fl6_update_dst(struct flowi6 *fl6,
|
|
{
|
|
{
|
|
struct ipv6_sr_hdr *srh = (struct ipv6_sr_hdr *)opt->srcrt;
|
|
struct ipv6_sr_hdr *srh = (struct ipv6_sr_hdr *)opt->srcrt;
|
|
|
|
|
|
- fl6->daddr = srh->segments[srh->first_segment];
|
|
|
|
|
|
+ fl6->daddr = srh->segments[srh->segments_left];
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
default:
|
|
default:
|