diff options
author | David S. Miller <davem@davemloft.net> | 2011-03-12 01:12:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-12 18:08:48 -0500 |
commit | 9d6ec938019c6b16cb9ec96598ebe8f20de435fe (patch) | |
tree | 9b850eb7fd48a6e5ffc15f47afd2e3edc93f5290 /net/sctp | |
parent | 68a5e3dd0a0056d8b349f9eea3756adda53ec17a (diff) |
ipv4: Use flowi4 in public route lookup interfaces.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/protocol.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index b6fa2940e30b..31c04568b23c 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -468,30 +468,30 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc, | |||
468 | union sctp_addr *saddr) | 468 | union sctp_addr *saddr) |
469 | { | 469 | { |
470 | struct rtable *rt; | 470 | struct rtable *rt; |
471 | struct flowi fl; | 471 | struct flowi4 fl4; |
472 | struct sctp_bind_addr *bp; | 472 | struct sctp_bind_addr *bp; |
473 | struct sctp_sockaddr_entry *laddr; | 473 | struct sctp_sockaddr_entry *laddr; |
474 | struct dst_entry *dst = NULL; | 474 | struct dst_entry *dst = NULL; |
475 | union sctp_addr dst_saddr; | 475 | union sctp_addr dst_saddr; |
476 | 476 | ||
477 | memset(&fl, 0x0, sizeof(struct flowi)); | 477 | memset(&fl4, 0x0, sizeof(struct flowi4)); |
478 | fl.fl4_dst = daddr->v4.sin_addr.s_addr; | 478 | fl4.daddr = daddr->v4.sin_addr.s_addr; |
479 | fl.fl4_dport = daddr->v4.sin_port; | 479 | fl4.uli.ports.dport = daddr->v4.sin_port; |
480 | fl.flowi_proto = IPPROTO_SCTP; | 480 | fl4.flowi4_proto = IPPROTO_SCTP; |
481 | if (asoc) { | 481 | if (asoc) { |
482 | fl.fl4_tos = RT_CONN_FLAGS(asoc->base.sk); | 482 | fl4.flowi4_tos = RT_CONN_FLAGS(asoc->base.sk); |
483 | fl.flowi_oif = asoc->base.sk->sk_bound_dev_if; | 483 | fl4.flowi4_oif = asoc->base.sk->sk_bound_dev_if; |
484 | fl.fl4_sport = htons(asoc->base.bind_addr.port); | 484 | fl4.uli.ports.sport = htons(asoc->base.bind_addr.port); |
485 | } | 485 | } |
486 | if (saddr) { | 486 | if (saddr) { |
487 | fl.fl4_src = saddr->v4.sin_addr.s_addr; | 487 | fl4.saddr = saddr->v4.sin_addr.s_addr; |
488 | fl.fl4_sport = saddr->v4.sin_port; | 488 | fl4.uli.ports.sport = saddr->v4.sin_port; |
489 | } | 489 | } |
490 | 490 | ||
491 | SCTP_DEBUG_PRINTK("%s: DST:%pI4, SRC:%pI4 - ", | 491 | SCTP_DEBUG_PRINTK("%s: DST:%pI4, SRC:%pI4 - ", |
492 | __func__, &fl.fl4_dst, &fl.fl4_src); | 492 | __func__, &fl4.daddr, &fl4.saddr); |
493 | 493 | ||
494 | rt = ip_route_output_key(&init_net, &fl); | 494 | rt = ip_route_output_key(&init_net, &fl4); |
495 | if (!IS_ERR(rt)) | 495 | if (!IS_ERR(rt)) |
496 | dst = &rt->dst; | 496 | dst = &rt->dst; |
497 | 497 | ||
@@ -533,9 +533,9 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc, | |||
533 | continue; | 533 | continue; |
534 | if ((laddr->state == SCTP_ADDR_SRC) && | 534 | if ((laddr->state == SCTP_ADDR_SRC) && |
535 | (AF_INET == laddr->a.sa.sa_family)) { | 535 | (AF_INET == laddr->a.sa.sa_family)) { |
536 | fl.fl4_src = laddr->a.v4.sin_addr.s_addr; | 536 | fl4.saddr = laddr->a.v4.sin_addr.s_addr; |
537 | fl.fl4_sport = laddr->a.v4.sin_port; | 537 | fl4.uli.ports.sport = laddr->a.v4.sin_port; |
538 | rt = ip_route_output_key(&init_net, &fl); | 538 | rt = ip_route_output_key(&init_net, &fl4); |
539 | if (!IS_ERR(rt)) { | 539 | if (!IS_ERR(rt)) { |
540 | dst = &rt->dst; | 540 | dst = &rt->dst; |
541 | goto out_unlock; | 541 | goto out_unlock; |