diff options
Diffstat (limited to 'net/ipv4/fib_frontend.c')
-rw-r--r-- | net/ipv4/fib_frontend.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index cfb527c060e4..9c399a70dd5d 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -122,7 +122,7 @@ static void fib_flush(void) | |||
122 | * Find the first device with a given source address. | 122 | * Find the first device with a given source address. |
123 | */ | 123 | */ |
124 | 124 | ||
125 | struct net_device * ip_dev_find(u32 addr) | 125 | struct net_device * ip_dev_find(__be32 addr) |
126 | { | 126 | { |
127 | struct flowi fl = { .nl_u = { .ip4_u = { .daddr = addr } } }; | 127 | struct flowi fl = { .nl_u = { .ip4_u = { .daddr = addr } } }; |
128 | struct fib_result res; | 128 | struct fib_result res; |
@@ -146,7 +146,7 @@ out: | |||
146 | return dev; | 146 | return dev; |
147 | } | 147 | } |
148 | 148 | ||
149 | unsigned inet_addr_type(u32 addr) | 149 | unsigned inet_addr_type(__be32 addr) |
150 | { | 150 | { |
151 | struct flowi fl = { .nl_u = { .ip4_u = { .daddr = addr } } }; | 151 | struct flowi fl = { .nl_u = { .ip4_u = { .daddr = addr } } }; |
152 | struct fib_result res; | 152 | struct fib_result res; |
@@ -180,8 +180,8 @@ unsigned inet_addr_type(u32 addr) | |||
180 | - check, that packet arrived from expected physical interface. | 180 | - check, that packet arrived from expected physical interface. |
181 | */ | 181 | */ |
182 | 182 | ||
183 | int fib_validate_source(u32 src, u32 dst, u8 tos, int oif, | 183 | int fib_validate_source(__be32 src, __be32 dst, u8 tos, int oif, |
184 | struct net_device *dev, u32 *spec_dst, u32 *itag) | 184 | struct net_device *dev, __be32 *spec_dst, u32 *itag) |
185 | { | 185 | { |
186 | struct in_device *in_dev; | 186 | struct in_device *in_dev; |
187 | struct flowi fl = { .nl_u = { .ip4_u = | 187 | struct flowi fl = { .nl_u = { .ip4_u = |
@@ -253,7 +253,7 @@ e_inval: | |||
253 | 253 | ||
254 | #ifndef CONFIG_IP_NOSIOCRT | 254 | #ifndef CONFIG_IP_NOSIOCRT |
255 | 255 | ||
256 | static inline u32 sk_extract_addr(struct sockaddr *addr) | 256 | static inline __be32 sk_extract_addr(struct sockaddr *addr) |
257 | { | 257 | { |
258 | return ((struct sockaddr_in *) addr)->sin_addr.s_addr; | 258 | return ((struct sockaddr_in *) addr)->sin_addr.s_addr; |
259 | } | 259 | } |
@@ -273,7 +273,7 @@ static int put_rtax(struct nlattr *mx, int len, int type, u32 value) | |||
273 | static int rtentry_to_fib_config(int cmd, struct rtentry *rt, | 273 | static int rtentry_to_fib_config(int cmd, struct rtentry *rt, |
274 | struct fib_config *cfg) | 274 | struct fib_config *cfg) |
275 | { | 275 | { |
276 | u32 addr; | 276 | __be32 addr; |
277 | int plen; | 277 | int plen; |
278 | 278 | ||
279 | memset(cfg, 0, sizeof(*cfg)); | 279 | memset(cfg, 0, sizeof(*cfg)); |
@@ -292,7 +292,7 @@ static int rtentry_to_fib_config(int cmd, struct rtentry *rt, | |||
292 | plen = 32; | 292 | plen = 32; |
293 | addr = sk_extract_addr(&rt->rt_dst); | 293 | addr = sk_extract_addr(&rt->rt_dst); |
294 | if (!(rt->rt_flags & RTF_HOST)) { | 294 | if (!(rt->rt_flags & RTF_HOST)) { |
295 | u32 mask = sk_extract_addr(&rt->rt_genmask); | 295 | __be32 mask = sk_extract_addr(&rt->rt_genmask); |
296 | 296 | ||
297 | if (rt->rt_genmask.sa_family != AF_INET) { | 297 | if (rt->rt_genmask.sa_family != AF_INET) { |
298 | if (mask || rt->rt_genmask.sa_family) | 298 | if (mask || rt->rt_genmask.sa_family) |
@@ -499,22 +499,22 @@ static int rtm_to_fib_config(struct sk_buff *skb, struct nlmsghdr *nlh, | |||
499 | nlmsg_for_each_attr(attr, nlh, sizeof(struct rtmsg), remaining) { | 499 | nlmsg_for_each_attr(attr, nlh, sizeof(struct rtmsg), remaining) { |
500 | switch (attr->nla_type) { | 500 | switch (attr->nla_type) { |
501 | case RTA_DST: | 501 | case RTA_DST: |
502 | cfg->fc_dst = nla_get_u32(attr); | 502 | cfg->fc_dst = nla_get_be32(attr); |
503 | break; | 503 | break; |
504 | case RTA_SRC: | 504 | case RTA_SRC: |
505 | cfg->fc_src = nla_get_u32(attr); | 505 | cfg->fc_src = nla_get_be32(attr); |
506 | break; | 506 | break; |
507 | case RTA_OIF: | 507 | case RTA_OIF: |
508 | cfg->fc_oif = nla_get_u32(attr); | 508 | cfg->fc_oif = nla_get_u32(attr); |
509 | break; | 509 | break; |
510 | case RTA_GATEWAY: | 510 | case RTA_GATEWAY: |
511 | cfg->fc_gw = nla_get_u32(attr); | 511 | cfg->fc_gw = nla_get_be32(attr); |
512 | break; | 512 | break; |
513 | case RTA_PRIORITY: | 513 | case RTA_PRIORITY: |
514 | cfg->fc_priority = nla_get_u32(attr); | 514 | cfg->fc_priority = nla_get_u32(attr); |
515 | break; | 515 | break; |
516 | case RTA_PREFSRC: | 516 | case RTA_PREFSRC: |
517 | cfg->fc_prefsrc = nla_get_u32(attr); | 517 | cfg->fc_prefsrc = nla_get_be32(attr); |
518 | break; | 518 | break; |
519 | case RTA_METRICS: | 519 | case RTA_METRICS: |
520 | cfg->fc_mx = nla_data(attr); | 520 | cfg->fc_mx = nla_data(attr); |
@@ -627,8 +627,7 @@ out: | |||
627 | only when netlink is already locked. | 627 | only when netlink is already locked. |
628 | */ | 628 | */ |
629 | 629 | ||
630 | static void fib_magic(int cmd, int type, u32 dst, int dst_len, | 630 | static void fib_magic(int cmd, int type, __be32 dst, int dst_len, struct in_ifaddr *ifa) |
631 | struct in_ifaddr *ifa) | ||
632 | { | 631 | { |
633 | struct fib_table *tb; | 632 | struct fib_table *tb; |
634 | struct fib_config cfg = { | 633 | struct fib_config cfg = { |
@@ -667,9 +666,9 @@ void fib_add_ifaddr(struct in_ifaddr *ifa) | |||
667 | struct in_device *in_dev = ifa->ifa_dev; | 666 | struct in_device *in_dev = ifa->ifa_dev; |
668 | struct net_device *dev = in_dev->dev; | 667 | struct net_device *dev = in_dev->dev; |
669 | struct in_ifaddr *prim = ifa; | 668 | struct in_ifaddr *prim = ifa; |
670 | u32 mask = ifa->ifa_mask; | 669 | __be32 mask = ifa->ifa_mask; |
671 | u32 addr = ifa->ifa_local; | 670 | __be32 addr = ifa->ifa_local; |
672 | u32 prefix = ifa->ifa_address&mask; | 671 | __be32 prefix = ifa->ifa_address&mask; |
673 | 672 | ||
674 | if (ifa->ifa_flags&IFA_F_SECONDARY) { | 673 | if (ifa->ifa_flags&IFA_F_SECONDARY) { |
675 | prim = inet_ifa_byprefix(in_dev, prefix, mask); | 674 | prim = inet_ifa_byprefix(in_dev, prefix, mask); |
@@ -685,7 +684,7 @@ void fib_add_ifaddr(struct in_ifaddr *ifa) | |||
685 | return; | 684 | return; |
686 | 685 | ||
687 | /* Add broadcast address, if it is explicitly assigned. */ | 686 | /* Add broadcast address, if it is explicitly assigned. */ |
688 | if (ifa->ifa_broadcast && ifa->ifa_broadcast != 0xFFFFFFFF) | 687 | if (ifa->ifa_broadcast && ifa->ifa_broadcast != htonl(0xFFFFFFFF)) |
689 | fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); | 688 | fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); |
690 | 689 | ||
691 | if (!ZERONET(prefix) && !(ifa->ifa_flags&IFA_F_SECONDARY) && | 690 | if (!ZERONET(prefix) && !(ifa->ifa_flags&IFA_F_SECONDARY) && |
@@ -707,8 +706,8 @@ static void fib_del_ifaddr(struct in_ifaddr *ifa) | |||
707 | struct net_device *dev = in_dev->dev; | 706 | struct net_device *dev = in_dev->dev; |
708 | struct in_ifaddr *ifa1; | 707 | struct in_ifaddr *ifa1; |
709 | struct in_ifaddr *prim = ifa; | 708 | struct in_ifaddr *prim = ifa; |
710 | u32 brd = ifa->ifa_address|~ifa->ifa_mask; | 709 | __be32 brd = ifa->ifa_address|~ifa->ifa_mask; |
711 | u32 any = ifa->ifa_address&ifa->ifa_mask; | 710 | __be32 any = ifa->ifa_address&ifa->ifa_mask; |
712 | #define LOCAL_OK 1 | 711 | #define LOCAL_OK 1 |
713 | #define BRD_OK 2 | 712 | #define BRD_OK 2 |
714 | #define BRD0_OK 4 | 713 | #define BRD0_OK 4 |