aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/fib_frontend.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/fib_frontend.c')
-rw-r--r--net/ipv4/fib_frontend.c37
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
125struct net_device * ip_dev_find(u32 addr) 125struct 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
149unsigned inet_addr_type(u32 addr) 149unsigned 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
183int fib_validate_source(u32 src, u32 dst, u8 tos, int oif, 183int 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
256static inline u32 sk_extract_addr(struct sockaddr *addr) 256static 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)
273static int rtentry_to_fib_config(int cmd, struct rtentry *rt, 273static 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
630static void fib_magic(int cmd, int type, u32 dst, int dst_len, 630static 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