Changeset 36284
- Timestamp:
- 2013-04-09T16:19:13+02:00 (5 years ago)
- Location:
- trunk/package/network/config/swconfig
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/package/network/config/swconfig/Makefile
r34679 r36284 27 27 -I$(STAGING_DIR)/usr/include/libnl-tiny \ 28 28 -I$(PKG_BUILD_DIR) \ 29 $(TARGET_CPPFLAGS) 29 $(TARGET_CPPFLAGS) \ 30 -I$(LINUX_DIR)/user_headers/include 30 31 31 32 define Build/Prepare -
trunk/package/network/config/swconfig/src/cli.c
r36282 r36284 42 42 CMD_HELP, 43 43 CMD_SHOW, 44 CMD_PORTMAP, 44 45 }; 45 46 … … 215 216 char *ckey = NULL; 216 217 char *cvalue = NULL; 218 char *csegment = NULL; 217 219 218 220 if((argc == 2) && !strcmp(argv[1], "list")) { … … 253 255 cmd = CMD_LOAD; 254 256 ckey = argv[++i]; 257 } else if (!strcmp(arg, "portmap")) { 258 if (i + 1 < argc) 259 csegment = argv[++i]; 260 cmd = CMD_PORTMAP; 255 261 } else if (!strcmp(arg, "show")) { 256 262 cmd = CMD_SHOW; … … 324 330 case CMD_HELP: 325 331 list_attributes(dev); 332 break; 333 case CMD_PORTMAP: 334 swlib_print_portmap(dev, csegment); 326 335 break; 327 336 case CMD_SHOW: -
trunk/package/network/config/swconfig/src/swlib.c
r36282 r36284 42 42 static int refcount = 0; 43 43 44 static struct nla_policy port_policy[ ] = {44 static struct nla_policy port_policy[SWITCH_ATTR_MAX] = { 45 45 [SWITCH_PORT_ID] = { .type = NLA_U32 }, 46 46 [SWITCH_PORT_FLAG_TAGGED] = { .type = NLA_FLAG }, 47 }; 48 49 static struct nla_policy portmap_policy[SWITCH_PORTMAP_MAX] = { 50 [SWITCH_PORTMAP_SEGMENT] = { .type = NLA_STRING }, 51 [SWITCH_PORTMAP_VIRT] = { .type = NLA_U32 }, 47 52 }; 48 53 … … 573 578 struct switch_dev *ptr; 574 579 }; 580 581 static int 582 add_port_map(struct switch_dev *dev, struct nlattr *nla) 583 { 584 struct nlattr *p; 585 int err = 0, idx = 0; 586 int remaining; 587 588 dev->maps = malloc(sizeof(struct switch_portmap) * dev->ports); 589 if (!dev->maps) 590 return -1; 591 memset(dev->maps, 0, sizeof(struct switch_portmap) * dev->ports); 592 593 nla_for_each_nested(p, nla, remaining) { 594 struct nlattr *tb[SWITCH_PORTMAP_MAX+1]; 595 596 if (idx >= dev->ports) 597 continue; 598 599 err = nla_parse_nested(tb, SWITCH_PORTMAP_MAX, p, portmap_policy); 600 if (err < 0) 601 continue; 602 603 604 if (tb[SWITCH_PORTMAP_SEGMENT] && tb[SWITCH_PORTMAP_VIRT]) { 605 dev->maps[idx].segment = strdup(nla_get_string(tb[SWITCH_PORTMAP_SEGMENT])); 606 dev->maps[idx].virt = nla_get_u32(tb[SWITCH_PORTMAP_VIRT]); 607 } 608 idx++; 609 } 610 611 out: 612 return err; 613 } 614 575 615 576 616 static int … … 611 651 if (tb[SWITCH_ATTR_CPU_PORT]) 612 652 dev->cpu_port = nla_get_u32(tb[SWITCH_ATTR_CPU_PORT]); 653 if (tb[SWITCH_ATTR_PORTMAP]) 654 add_port_map(dev, tb[SWITCH_ATTR_PORTMAP]); 613 655 614 656 if (!sa->head) { … … 656 698 } 657 699 700 void 701 swlib_print_portmap(struct switch_dev *dev, char *segment) 702 { 703 int i; 704 705 if (segment) { 706 if (!strcmp(segment, "cpu")) { 707 printf("%d ", dev->cpu_port); 708 } else if (!strcmp(segment, "disabled")) { 709 for (i = 0; i < dev->ports; i++) 710 if (!dev->maps[i].segment) 711 printf("%d ", i); 712 } else for (i = 0; i < dev->ports; i++) { 713 if (dev->maps[i].segment && !strcmp(dev->maps[i].segment, segment)) 714 printf("%d ", i); 715 } 716 } else { 717 printf("%s - %s\n", dev->dev_name, dev->name); 718 for (i = 0; i < dev->ports; i++) 719 if (i == dev->cpu_port) 720 printf("port%d:\tcpu\n", i); 721 else if (dev->maps[i].segment) 722 printf("port%d:\t%s.%d\n", i, dev->maps[i].segment, dev->maps[i].virt); 723 else 724 printf("port%d:\tdisabled\n", i); 725 } 726 } 727 658 728 struct switch_dev * 659 729 swlib_connect(const char *name) -
trunk/package/network/config/swconfig/src/swlib.h
r36282 r36284 110 110 struct switch_attr; 111 111 struct switch_port; 112 struct switch_port_map; 112 113 struct switch_val; 113 114 struct uci_package; … … 124 125 struct switch_attr *port_ops; 125 126 struct switch_attr *vlan_ops; 127 struct switch_portmap *maps; 126 128 struct switch_dev *next; 127 129 void *priv; … … 155 157 }; 156 158 159 struct switch_portmap { 160 unsigned int virt; 161 const char *segment; 162 }; 163 157 164 /** 158 165 * swlib_list: list all switches 159 166 */ 160 167 void swlib_list(void); 168 169 /** 170 * swlib_print_portmap: get portmap 171 * @dev: switch device struct 172 */ 173 void swlib_print_portmap(struct switch_dev *dev, char *segment); 161 174 162 175 /**
Note: See TracChangeset
for help on using the changeset viewer.