]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ipv4/syncookies.c
Merge branch 'packaging' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek...
[karo-tx-linux.git] / net / ipv4 / syncookies.c
index 47519205a014a773e2df5b21f6fdf27c43fe6cb1..8b44c6d2a79be9c956d2733d7f6547107d70b179 100644 (file)
@@ -345,17 +345,20 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
         * no easy way to do this.
         */
        {
-               struct flowi fl = { .mark = sk->sk_mark,
-                                   .fl4_dst = ((opt && opt->srr) ?
-                                               opt->faddr : ireq->rmt_addr),
-                                   .fl4_src = ireq->loc_addr,
-                                   .fl4_tos = RT_CONN_FLAGS(sk),
-                                   .proto = IPPROTO_TCP,
-                                   .flags = inet_sk_flowi_flags(sk),
-                                   .fl_ip_sport = th->dest,
-                                   .fl_ip_dport = th->source };
-               security_req_classify_flow(req, &fl);
-               if (ip_route_output_key(sock_net(sk), &rt, &fl)) {
+               struct flowi4 fl4 = {
+                       .flowi4_mark = sk->sk_mark,
+                       .daddr = ((opt && opt->srr) ?
+                                 opt->faddr : ireq->rmt_addr),
+                       .saddr = ireq->loc_addr,
+                       .flowi4_tos = RT_CONN_FLAGS(sk),
+                       .flowi4_proto = IPPROTO_TCP,
+                       .flowi4_flags = inet_sk_flowi_flags(sk),
+                       .fl4_sport = th->dest,
+                       .fl4_dport = th->source,
+               };
+               security_req_classify_flow(req, flowi4_to_flowi(&fl4));
+               rt = ip_route_output_key(sock_net(sk), &fl4);
+               if (IS_ERR(rt)) {
                        reqsk_free(req);
                        goto out;
                }