sctp: Do not account for sizeof(struct sk_buff) in estimated rwnd
[linux-2.6.git] / net / ipv6 / xfrm6_state.c
index a02598e..248f0b2 100644 (file)
 static void
 __xfrm6_init_tempsel(struct xfrm_selector *sel, const struct flowi *fl)
 {
+       const struct flowi6 *fl6 = &fl->u.ip6;
+
        /* Initialize temporary selector matching only
         * to current session. */
-       ipv6_addr_copy((struct in6_addr *)&sel->daddr, &fl->fl6_dst);
-       ipv6_addr_copy((struct in6_addr *)&sel->saddr, &fl->fl6_src);
-       sel->dport = xfrm_flowi_dport(fl);
+       ipv6_addr_copy((struct in6_addr *)&sel->daddr, &fl6->daddr);
+       ipv6_addr_copy((struct in6_addr *)&sel->saddr, &fl6->saddr);
+       sel->dport = xfrm_flowi_dport(fl, &fl6->uli);
        sel->dport_mask = htons(0xffff);
-       sel->sport = xfrm_flowi_sport(fl);
+       sel->sport = xfrm_flowi_sport(fl, &fl6->uli);
        sel->sport_mask = htons(0xffff);
        sel->family = AF_INET6;
        sel->prefixlen_d = 128;
        sel->prefixlen_s = 128;
-       sel->proto = fl->proto;
-       sel->ifindex = fl->oif;
+       sel->proto = fl6->flowi6_proto;
+       sel->ifindex = fl6->flowi6_oif;
 }
 
 static void
@@ -176,6 +178,7 @@ static struct xfrm_state_afinfo xfrm6_state_afinfo = {
        .tmpl_sort              = __xfrm6_tmpl_sort,
        .state_sort             = __xfrm6_state_sort,
        .output                 = xfrm6_output,
+       .output_finish          = xfrm6_output_finish,
        .extract_input          = xfrm6_extract_input,
        .extract_output         = xfrm6_extract_output,
        .transport_finish       = xfrm6_transport_finish,