Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/networking/libiproute/iprule.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 40  static void usage(void) Line 40  static void usage(void)
40  }  }
41  */  */
42    
43  static int print_rule(const struct sockaddr_nl *who UNUSED_PARAM,  static int FAST_FUNC print_rule(const struct sockaddr_nl *who UNUSED_PARAM,
44   struct nlmsghdr *n, void *arg UNUSED_PARAM)   struct nlmsghdr *n, void *arg UNUSED_PARAM)
45  {  {
46   struct rtmsg *r = NLMSG_DATA(n);   struct rtmsg *r = NLMSG_DATA(n);
# Line 78  static int print_rule(const struct socka Line 78  static int print_rule(const struct socka
78   if (tb[RTA_SRC]) {   if (tb[RTA_SRC]) {
79   if (r->rtm_src_len != host_len) {   if (r->rtm_src_len != host_len) {
80   printf("%s/%u", rt_addr_n2a(r->rtm_family,   printf("%s/%u", rt_addr_n2a(r->rtm_family,
  RTA_PAYLOAD(tb[RTA_SRC]),  
81   RTA_DATA(tb[RTA_SRC]),   RTA_DATA(tb[RTA_SRC]),
82   abuf, sizeof(abuf)),   abuf, sizeof(abuf)),
83   r->rtm_src_len   r->rtm_src_len
# Line 99  static int print_rule(const struct socka Line 98  static int print_rule(const struct socka
98   if (tb[RTA_DST]) {   if (tb[RTA_DST]) {
99   if (r->rtm_dst_len != host_len) {   if (r->rtm_dst_len != host_len) {
100   printf("to %s/%u ", rt_addr_n2a(r->rtm_family,   printf("to %s/%u ", rt_addr_n2a(r->rtm_family,
  RTA_PAYLOAD(tb[RTA_DST]),  
101   RTA_DATA(tb[RTA_DST]),   RTA_DATA(tb[RTA_DST]),
102   abuf, sizeof(abuf)),   abuf, sizeof(abuf)),
103   r->rtm_dst_len   r->rtm_dst_len
# Line 115  static int print_rule(const struct socka Line 113  static int print_rule(const struct socka
113   }   }
114    
115   if (r->rtm_tos) {   if (r->rtm_tos) {
116   printf("tos %s ", rtnl_dsfield_n2a(r->rtm_tos, b1, sizeof(b1)));   printf("tos %s ", rtnl_dsfield_n2a(r->rtm_tos, b1));
117   }   }
118   if (tb[RTA_PROTOINFO]) {   if (tb[RTA_PROTOINFO]) {
119   printf("fwmark %#x ", *(uint32_t*)RTA_DATA(tb[RTA_PROTOINFO]));   printf("fwmark %#x ", *(uint32_t*)RTA_DATA(tb[RTA_PROTOINFO]));
# Line 126  static int print_rule(const struct socka Line 124  static int print_rule(const struct socka
124   }   }
125    
126   if (r->rtm_table)   if (r->rtm_table)
127   printf("lookup %s ", rtnl_rttable_n2a(r->rtm_table, b1, sizeof(b1)));   printf("lookup %s ", rtnl_rttable_n2a(r->rtm_table, b1));
128    
129   if (tb[RTA_FLOW]) {   if (tb[RTA_FLOW]) {
130   uint32_t to = *(uint32_t*)RTA_DATA(tb[RTA_FLOW]);   uint32_t to = *(uint32_t*)RTA_DATA(tb[RTA_FLOW]);
# Line 134  static int print_rule(const struct socka Line 132  static int print_rule(const struct socka
132   to &= 0xFFFF;   to &= 0xFFFF;
133   if (from) {   if (from) {
134   printf("realms %s/",   printf("realms %s/",
135   rtnl_rtrealm_n2a(from, b1, sizeof(b1)));   rtnl_rtrealm_n2a(from, b1));
136   }   }
137   printf("%s ",   printf("%s ",
138   rtnl_rtrealm_n2a(to, b1, sizeof(b1)));   rtnl_rtrealm_n2a(to, b1));
139   }   }
140    
141   if (r->rtm_type == RTN_NAT) {   if (r->rtm_type == RTN_NAT) {
# Line 150  static int print_rule(const struct socka Line 148  static int print_rule(const struct socka
148   } else   } else
149   printf("masquerade");   printf("masquerade");
150   } else if (r->rtm_type != RTN_UNICAST)   } else if (r->rtm_type != RTN_UNICAST)
151   fputs(rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1)), stdout);   fputs(rtnl_rtntype_n2a(r->rtm_type, b1), stdout);
152    
153   bb_putchar('\n');   bb_putchar('\n');
154   /*fflush(stdout);*/   /*fflush_all();*/
155   return 0;   return 0;
156  }  }
157    
# Line 168  static int iprule_list(char **argv) Line 166  static int iprule_list(char **argv)
166    
167   if (*argv) {   if (*argv) {
168   //bb_error_msg("\"rule show\" needs no arguments");   //bb_error_msg("\"rule show\" needs no arguments");
169   bb_warn_ignoring_args(1);   bb_warn_ignoring_args(*argv);
170   return -1;   return -1;
171   }   }
172    
# Line 238  static int iprule_modify(int cmd, char * Line 236  static int iprule_modify(int cmd, char *
236     key == ARG_priority) {     key == ARG_priority) {
237   uint32_t pref;   uint32_t pref;
238   NEXT_ARG();   NEXT_ARG();
239   if (get_u32(&pref, *argv, 0))   pref = get_u32(*argv, "preference");
  invarg(*argv, "preference");  
240   addattr32(&req.n, sizeof(req), RTA_PRIORITY, pref);   addattr32(&req.n, sizeof(req), RTA_PRIORITY, pref);
241   } else if (key == ARG_tos) {   } else if (key == ARG_tos) {
242   uint32_t tos;   uint32_t tos;
# Line 250  static int iprule_modify(int cmd, char * Line 247  static int iprule_modify(int cmd, char *
247   } else if (key == ARG_fwmark) {   } else if (key == ARG_fwmark) {
248   uint32_t fwmark;   uint32_t fwmark;
249   NEXT_ARG();   NEXT_ARG();
250   if (get_u32(&fwmark, *argv, 0))   fwmark = get_u32(*argv, "fwmark");
  invarg(*argv, "fwmark");  
251   addattr32(&req.n, sizeof(req), RTA_PROTOINFO, fwmark);   addattr32(&req.n, sizeof(req), RTA_PROTOINFO, fwmark);
252   } else if (key == ARG_realms) {   } else if (key == ARG_realms) {
253   uint32_t realm;   uint32_t realm;

Legend:
Removed from v.983  
changed lines
  Added in v.984