|
@@ -2508,16 +2508,15 @@ void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark,
|
|
{
|
|
{
|
|
const struct ipv6hdr *iph = (struct ipv6hdr *) skb->data;
|
|
const struct ipv6hdr *iph = (struct ipv6hdr *) skb->data;
|
|
struct dst_entry *dst;
|
|
struct dst_entry *dst;
|
|
- struct flowi6 fl6;
|
|
|
|
-
|
|
|
|
- memset(&fl6, 0, sizeof(fl6));
|
|
|
|
- fl6.flowi6_iif = LOOPBACK_IFINDEX;
|
|
|
|
- fl6.flowi6_oif = oif;
|
|
|
|
- fl6.flowi6_mark = mark;
|
|
|
|
- fl6.daddr = iph->daddr;
|
|
|
|
- fl6.saddr = iph->saddr;
|
|
|
|
- fl6.flowlabel = ip6_flowinfo(iph);
|
|
|
|
- fl6.flowi6_uid = uid;
|
|
|
|
|
|
+ struct flowi6 fl6 = {
|
|
|
|
+ .flowi6_iif = LOOPBACK_IFINDEX,
|
|
|
|
+ .flowi6_oif = oif,
|
|
|
|
+ .flowi6_mark = mark,
|
|
|
|
+ .daddr = iph->daddr,
|
|
|
|
+ .saddr = iph->saddr,
|
|
|
|
+ .flowlabel = ip6_flowinfo(iph),
|
|
|
|
+ .flowi6_uid = uid,
|
|
|
|
+ };
|
|
|
|
|
|
dst = ip6_route_redirect(net, &fl6, skb, &ipv6_hdr(skb)->saddr);
|
|
dst = ip6_route_redirect(net, &fl6, skb, &ipv6_hdr(skb)->saddr);
|
|
rt6_do_redirect(dst, NULL, skb);
|
|
rt6_do_redirect(dst, NULL, skb);
|