: Use FRA_* attributes for routing rules
Subsystems (2)
[IPROUTE]: Use FRA_* attributes for routing rules
Use the FRA attributes for routing rules, with exception of RTA_GATEWAY (used for route-NAT) which isn't supported by current kernels anymore and thus doesn't exist as FRA attribute.
Signed-off-by Patrick McHardy <[email protected]>
---
commit 75f9b78e5ef1f16fc8e42375b9951083da522289
tree de357a8517cb64acd9608f20dc7ab34f7b6ff13a
parent 7081c45d9713f2ed1aeacdf8d0ff830bfce164f2
author Patrick McHardy <[email protected]> Thu, 15 Mar 2007 04:36:49 +0100 committer Patrick McHardy <[email protected]> Thu, 15 Mar 2007 04:36:49 +0100
ip/iprule.c | 68 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 34 insertions(+), 34 deletions(-)
ip/iprule.c +34 -34
@@ -53,7 +53,7 @@ int print_rule(const struct sockaddr_nlint len = n->nlmsg_len;int host_len =-1 ;__u32 table; -struct rtattr * tb[RTA_MAX +1 ]; +struct rtattr * tb[FRA_MAX +1 ];char abuf[256 ];SPRINT_BUF (b1);
@@ -64,7 +64,7 @@ int print_rule(const struct sockaddr_nlif (len <0 )return -1 ; -parse_rtattr (tb,RTA_MAX ,RTM_RTA (r), len); +parse_rtattr (tb,FRA_MAX ,RTM_RTA (r), len);if (r->rtm_family ==AF_INET ) host_len =32 ;
@@ -78,26 +78,26 @@ int print_rule(const struct sockaddr_nlif (n->nlmsg_type ==RTM_DELRULE )fprintf (fp,"Deleted " ); -if (tb[RTA_PRIORITY ]) -fprintf (fp,"%u:\t" , *(unsigned *)RTA_DATA (tb[RTA_PRIORITY ])); +if (tb[FRA_PRIORITY ]) +fprintf (fp,"%u:\t" , *(unsigned *)RTA_DATA (tb[FRA_PRIORITY ]));else fprintf (fp,"0:\t" );if (r->rtm_flags &FIB_RULE_INVERT )fprintf (fp,"not " ); -if (tb[RTA_SRC ]) { +if (tb[FRA_SRC ]) {if (r->rtm_src_len != host_len) {fprintf (fp,"from %s/%u " ,rt_addr_n2a (r->rtm_family, -RTA_PAYLOAD (tb[RTA_SRC ]), -RTA_DATA (tb[RTA_SRC ]), +RTA_PAYLOAD (tb[FRA_SRC ]), +RTA_DATA (tb[FRA_SRC ]), abuf,sizeof (abuf)), r->rtm_src_len ); }else {fprintf (fp,"from %s " ,format_host (r->rtm_family, -RTA_PAYLOAD (tb[RTA_SRC ]), -RTA_DATA (tb[RTA_SRC ]), +RTA_PAYLOAD (tb[FRA_SRC ]), +RTA_DATA (tb[FRA_SRC ]), abuf,sizeof (abuf)) ); }
@@ -107,18 +107,18 @@ int print_rule(const struct sockaddr_nlfprintf (fp,"from all " ); } -if (tb[RTA_DST ]) { +if (tb[FRA_DST ]) {if (r->rtm_dst_len != host_len) {fprintf (fp,"to %s/%u " ,rt_addr_n2a (r->rtm_family, -RTA_PAYLOAD (tb[RTA_DST ]), -RTA_DATA (tb[RTA_DST ]), +RTA_PAYLOAD (tb[FRA_DST ]), +RTA_DATA (tb[FRA_DST ]), abuf,sizeof (abuf)), r->rtm_dst_len ); }else {fprintf (fp,"to %s " ,format_host (r->rtm_family, -RTA_PAYLOAD (tb[RTA_DST ]), -RTA_DATA (tb[RTA_DST ]), +RTA_PAYLOAD (tb[FRA_DST ]), +RTA_DATA (tb[FRA_DST ]), abuf,sizeof (abuf))); } }else if (r->rtm_dst_len) {
@@ -129,29 +129,29 @@ int print_rule(const struct sockaddr_nlSPRINT_BUF (b1);fprintf (fp,"tos %s " ,rtnl_dsfield_n2a (r->rtm_tos, b1,sizeof (b1))); } -if (tb[RTA_PROTOINFO ] || tb[RTA_FWMASK ]) { +if (tb[FRA_FWMARK ] || tb[FRA_FWMASK ]) {__u32 mark =0 , mask =0 ; -if (tb[RTA_PROTOINFO ]) - mark = *(__u32 *)RTA_DATA (tb[RTA_PROTOINFO ]); +if (tb[FRA_FWMARK ]) + mark = *(__u32 *)RTA_DATA (tb[FRA_FWMARK ]); -if (tb[RTA_FWMASK ] && - (mask = *(__u32 *)RTA_DATA (tb[RTA_FWMASK ])) !=0xFFFFFFFF ) +if (tb[FRA_FWMASK ] && + (mask = *(__u32 *)RTA_DATA (tb[FRA_FWMASK ])) !=0xFFFFFFFF )fprintf (fp,"fwmark 0x%x/0x%x " , mark, mask);else fprintf (fp,"fwmark 0x%x " , mark); } -if (tb[RTA_IIF ]) { -fprintf (fp,"iif %s " , (char *)RTA_DATA (tb[RTA_IIF ])); +if (tb[FRA_IFNAME ]) { +fprintf (fp,"iif %s " , (char *)RTA_DATA (tb[FRA_IFNAME ])); } table =rtm_get_table (r, tb);if (table)fprintf (fp,"lookup %s " ,rtnl_rttable_n2a (table, b1,sizeof (b1))); -if (tb[RTA_FLOW ]) { -__u32 to = *(__u32 *)RTA_DATA (tb[RTA_FLOW ]); +if (tb[FRA_FLOW ]) { +__u32 to = *(__u32 *)RTA_DATA (tb[FRA_FLOW ]);__u32 from = to>>16 ; to &=0xFFFF ;if (from) {
@@ -239,13 +239,13 @@ static int iprule_modify(int cmd, int arNEXT_ARG ();get_prefix (&dst, *argv, req.r.rtm_family); req.r.rtm_src_len = dst.bitlen; -addattr_l (&req.n,sizeof (req),RTA_SRC , &dst.data, dst.bytelen); +addattr_l (&req.n,sizeof (req),FRA_SRC , &dst.data, dst.bytelen); }else if (strcmp (*argv,"to" ) ==0 ) {inet_prefix dst;NEXT_ARG ();get_prefix (&dst, *argv, req.r.rtm_family); req.r.rtm_dst_len = dst.bitlen; -addattr_l (&req.n,sizeof (req),RTA_DST , &dst.data, dst.bytelen); +addattr_l (&req.n,sizeof (req),FRA_DST , &dst.data, dst.bytelen); }else if (matches (*argv,"preference" ) ==0 ||matches (*argv,"order" ) ==0 ||matches (*argv,"priority" ) ==0 ) {
@@ -253,7 +253,7 @@ static int iprule_modify(int cmd, int arNEXT_ARG ();if (get_u32 (&pref, *argv,0 ))invarg ("preference value is invalid\n" , *argv); -addattr32 (&req.n,sizeof (req),RTA_PRIORITY , pref); +addattr32 (&req.n,sizeof (req),FRA_PRIORITY , pref); }else if (strcmp (*argv,"tos" ) ==0 ) {__u32 tos;NEXT_ARG ();
@@ -268,18 +268,18 @@ static int iprule_modify(int cmd, int ar *slash ='\0' ;if (get_u32 (&fwmark, *argv,0 ))invarg ("fwmark value is invalid\n" , *argv); -addattr32 (&req.n,sizeof (req),RTA_PROTOINFO , fwmark); +addattr32 (&req.n,sizeof (req),FRA_FWMARK , fwmark);if (slash) {if (get_u32 (&fwmask, slash+1 ,0 ))invarg ("fwmask value is invalid\n" , slash+1 ); -addattr32 (&req.n,sizeof (req),RTA_FWMASK , fwmask); +addattr32 (&req.n,sizeof (req),FRA_FWMASK , fwmask); } }else if (matches (*argv,"realms" ) ==0 ) {__u32 realm;NEXT_ARG ();if (get_rt_realms (&realm, *argv))invarg ("invalid realms\n" , *argv); -addattr32 (&req.n,sizeof (req),RTA_FLOW , realm); +addattr32 (&req.n,sizeof (req),FRA_FLOW , realm); }else if (matches (*argv,"table" ) ==0 ||strcmp (*argv,"lookup" ) ==0 ) {__u32 tid;
@@ -290,13 +290,13 @@ static int iprule_modify(int cmd, int ar req.r.rtm_table = tid; else { req.r.rtm_table =RT_TABLE_UNSPEC ; -addattr32 (&req.n,sizeof (req),RTA_TABLE , tid); +addattr32 (&req.n,sizeof (req),FRA_TABLE , tid); } table_ok =1 ; }else if (strcmp (*argv,"dev" ) ==0 ||strcmp (*argv,"iif" ) ==0 ) {NEXT_ARG (); -addattr_l (&req.n,sizeof (req),RTA_IIF , *argv,strlen (*argv)+1 ); +addattr_l (&req.n,sizeof (req),FRA_IFNAME , *argv,strlen (*argv)+1 ); }else if (strcmp (*argv,"nat" ) ==0 ||matches (*argv,"map-to" ) ==0 ) {NEXT_ARG ();
@@ -337,15 +337,15 @@ static int flush_rule(const struct sockastruct rtnl_handle rth2;struct rtmsg *r =NLMSG_DATA (n);int len = n->nlmsg_len; -struct rtattr * tb[RTA_MAX +1 ]; +struct rtattr * tb[FRA_MAX +1 ]; len -=NLMSG_LENGTH (sizeof (*r));if (len <0 )return -1 ; -parse_rtattr (tb,RTA_MAX ,RTM_RTA (r), len); +parse_rtattr (tb,FRA_MAX ,RTM_RTA (r), len); -if (tb[RTA_PRIORITY ]) { +if (tb[FRA_PRIORITY ]) { n->nlmsg_type =RTM_DELRULE ; n->nlmsg_flags =NLM_F_REQUEST ;