Lines Matching full:cfg

66 struct cfg {  struct
81 int (*f)(struct cfg *, int argc, char *argv[]); argument
121 read_register(struct cfg *cfg, int r) in read_register() argument
126 if (ioctl(cfg->fd, IOETHERSWITCHGETREG, &er) != 0) in read_register()
132 write_register(struct cfg *cfg, int r, int v) in write_register() argument
138 if (ioctl(cfg->fd, IOETHERSWITCHSETREG, &er) != 0) in write_register()
143 read_phyregister(struct cfg *cfg, int phy, int reg) in read_phyregister() argument
149 if (ioctl(cfg->fd, IOETHERSWITCHGETPHYREG, &er) != 0) in read_phyregister()
155 write_phyregister(struct cfg *cfg, int phy, int reg, int val) in write_phyregister() argument
162 if (ioctl(cfg->fd, IOETHERSWITCHSETPHYREG, &er) != 0) in write_phyregister()
167 set_port_vid(struct cfg *cfg, int argc, char *argv[]) in set_port_vid() argument
180 p.es_port = cfg->unit; in set_port_vid()
181 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) in set_port_vid()
184 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0) in set_port_vid()
190 set_port_flag(struct cfg *cfg, int argc, char *argv[]) in set_port_flag() argument
226 p.es_port = cfg->unit; in set_port_flag()
227 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) in set_port_flag()
233 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0) in set_port_flag()
239 set_port_media(struct cfg *cfg, int argc, char *argv[]) in set_port_media() argument
249 p.es_port = cfg->unit; in set_port_media()
252 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) in set_port_media()
259 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0) in set_port_media()
265 set_port_mediaopt(struct cfg *cfg, int argc, char *argv[]) in set_port_mediaopt() argument
275 p.es_port = cfg->unit; in set_port_mediaopt()
278 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) in set_port_mediaopt()
288 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0) in set_port_mediaopt()
294 set_port_led(struct cfg *cfg, int argc, char *argv[]) in set_port_led() argument
304 p.es_port = cfg->unit; in set_port_led()
305 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) in set_port_led()
324 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0) in set_port_led()
331 set_vlangroup_vid(struct cfg *cfg, int argc, char *argv[]) in set_vlangroup_vid() argument
343 vg.es_vlangroup = cfg->unit; in set_vlangroup_vid()
344 if (ioctl(cfg->fd, IOETHERSWITCHGETVLANGROUP, &vg) != 0) in set_vlangroup_vid()
347 if (ioctl(cfg->fd, IOETHERSWITCHSETVLANGROUP, &vg) != 0) in set_vlangroup_vid()
353 set_vlangroup_members(struct cfg *cfg, int argc, char *argv[]) in set_vlangroup_members() argument
370 if (v < 0 || v >= cfg->info.es_nports) in set_vlangroup_members()
371 errx(EX_USAGE, "Member port must be between 0 and %d", cfg->info.es_nports-1); in set_vlangroup_members()
385 vg.es_vlangroup = cfg->unit; in set_vlangroup_members()
386 if (ioctl(cfg->fd, IOETHERSWITCHGETVLANGROUP, &vg) != 0) in set_vlangroup_members()
390 if (ioctl(cfg->fd, IOETHERSWITCHSETVLANGROUP, &vg) != 0) in set_vlangroup_members()
396 set_register(struct cfg *cfg, char *arg) in set_register() argument
406 write_register(cfg, a, v); in set_register()
408 printf("\treg 0x%04x=0x%08x\n", a, read_register(cfg, a)); in set_register()
413 set_phyregister(struct cfg *cfg, char *arg) in set_phyregister() argument
429 write_phyregister(cfg, phy, reg, val); in set_phyregister()
431 printf("\treg %d.0x%02x=0x%04x\n", phy, reg, read_phyregister(cfg, phy, reg)); in set_phyregister()
436 set_vlan_mode(struct cfg *cfg, int argc, char *argv[]) in set_vlan_mode() argument
457 if (ioctl(cfg->fd, IOETHERSWITCHSETCONF, &conf) != 0) in set_vlan_mode()
464 atu_flush(struct cfg *cfg, int argc, char *argv[]) in atu_flush() argument
487 if (ioctl(cfg->fd, i, &p) != 0) in atu_flush()
494 atu_dump(struct cfg *cfg, int argc, char *argv[]) in atu_dump() argument
506 if (ioctl(cfg->fd, IOETHERSWITCHGETTABLE, &p) != 0) in atu_dump()
513 if (ioctl(cfg->fd, IOETHERSWITCHGETTABLEENTRY, &e) != 0) in atu_dump()
525 print_config(struct cfg *cfg) in print_config() argument
530 c = strrchr(cfg->controlfile, '/'); in print_config()
534 c = cfg->controlfile; in print_config()
537 if (cfg->conf.cmd & ETHERSWITCH_CONF_VLAN_MODE) { in print_config()
539 switch (cfg->conf.vlan_mode) { in print_config()
561 if (cfg->conf.cmd & ETHERSWITCH_CONF_SWITCH_MACADDR) { in print_config()
564 ether_ntoa(&cfg->conf.switch_macaddr)); in print_config()
569 print_port(struct cfg *cfg, int port) in print_port() argument
579 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0) in print_port()
582 if (cfg->conf.vlan_mode == ETHERSWITCH_VLAN_DOT1Q) in print_port()
603 if (cfg->mediatypes) { in print_port()
616 print_vlangroup(struct cfg *cfg, int vlangroup) in print_vlangroup() argument
622 if (ioctl(cfg->fd, IOETHERSWITCHGETVLANGROUP, &vg) != 0) in print_vlangroup()
628 if (cfg->conf.vlan_mode == ETHERSWITCH_VLAN_PORT) in print_vlangroup()
635 for (i=0; i<cfg->info.es_nports; i++) { in print_vlangroup()
651 print_info(struct cfg *cfg) in print_info() argument
656 c = strrchr(cfg->controlfile, '/'); in print_info()
660 c = cfg->controlfile; in print_info()
661 if (cfg->verbose) { in print_info()
663 cfg->info.es_name, cfg->info.es_nports, in print_info()
664 cfg->info.es_nvlangroups); in print_info()
666 printb("VLAN capabilities", cfg->info.es_vlan_caps, in print_info()
670 print_config(cfg); in print_info()
671 for (i=0; i<cfg->info.es_nports; i++) { in print_info()
672 print_port(cfg, i); in print_info()
674 for (i=0; i<cfg->info.es_nvlangroups; i++) { in print_info()
675 print_vlangroup(cfg, i); in print_info()
680 usage(struct cfg *cfg __unused, char *argv[] __unused) in usage()
701 newmode(struct cfg *cfg, enum cmdmode mode) in newmode() argument
703 if (mode == cfg->mode) in newmode()
705 switch (cfg->mode) { in newmode()
713 if (ioctl(cfg->fd, IOETHERSWITCHGETCONF, &cfg->conf) != 0) in newmode()
715 print_config(cfg); in newmode()
718 print_port(cfg, cfg->unit); in newmode()
721 print_vlangroup(cfg, cfg->unit); in newmode()
728 cfg->mode = mode; in newmode()
735 struct cfg cfg; in main() local
738 bzero(&cfg, sizeof(cfg)); in main()
739 cfg.controlfile = "/dev/etherswitch0"; in main()
743 cfg.controlfile = optarg; in main()
746 cfg.mediatypes++; in main()
749 cfg.verbose++; in main()
754 usage(&cfg, argv); in main()
758 cfg.fd = open(cfg.controlfile, O_RDONLY); in main()
759 if (cfg.fd < 0) in main()
760 err(EX_UNAVAILABLE, "Can't open control file: %s", cfg.controlfile); in main()
761 if (ioctl(cfg.fd, IOETHERSWITCHGETINFO, &cfg.info) != 0) in main()
763 if (ioctl(cfg.fd, IOETHERSWITCHGETCONF, &cfg.conf) != 0) in main()
766 print_info(&cfg); in main()
769 cfg.mode = MODE_NONE; in main()
771 switch(cfg.mode) { in main()
774 print_info(&cfg); in main()
775 } else if (sscanf(argv[0], "port%d", &cfg.unit) == 1) { in main()
776 if (cfg.unit < 0 || cfg.unit >= cfg.info.es_nports) in main()
777 errx(EX_USAGE, "port unit must be between 0 and %d", cfg.info.es_nports - 1); in main()
778 newmode(&cfg, MODE_PORT); in main()
779 } else if (sscanf(argv[0], "vlangroup%d", &cfg.unit) == 1) { in main()
780 if (cfg.unit < 0 || cfg.unit >= cfg.info.es_nvlangroups) in main()
783 cfg.info.es_nvlangroups - 1); in main()
784 newmode(&cfg, MODE_VLANGROUP); in main()
786 newmode(&cfg, MODE_CONFIG); in main()
788 newmode(&cfg, MODE_PHYREG); in main()
790 newmode(&cfg, MODE_REGISTER); in main()
792 usage(&cfg, argv); in main()
794 newmode(&cfg, MODE_ATU); in main()
805 if (cfg.mode == cmds[i].mode && in main()
815 r = (cmds[i].f)(&cfg, argc, argv); in main()
833 newmode(&cfg, MODE_NONE); in main()
838 if (set_register(&cfg, argv[0]) != 0) { in main()
839 newmode(&cfg, MODE_NONE); in main()
844 if (set_phyregister(&cfg, argv[0]) != 0) { in main()
845 newmode(&cfg, MODE_NONE); in main()
854 newmode(&cfg, MODE_NONE); in main()
855 close(cfg.fd); in main()