Deleted Added
full compact
etherswitchcfg.c (249748) etherswitchcfg.c (249752)
1/*-
2 * Copyright (c) 2011-2012 Stefan Bethke.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2011-2012 Stefan Bethke.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sbin/etherswitchcfg/etherswitchcfg.c 249748 2013-04-22 05:30:20Z adrian $
26 * $FreeBSD: head/sbin/etherswitchcfg/etherswitchcfg.c 249752 2013-04-22 05:52:18Z adrian $
27 */
28
29#include <sys/cdefs.h>
27 */
28
29#include <sys/cdefs.h>
30__FBSDID("$FreeBSD: head/sbin/etherswitchcfg/etherswitchcfg.c 249748 2013-04-22 05:30:20Z adrian $");
30__FBSDID("$FreeBSD: head/sbin/etherswitchcfg/etherswitchcfg.c 249752 2013-04-22 05:52:18Z adrian $");
31
32#include <ctype.h>
33#include <err.h>
34#include <errno.h>
35#include <fcntl.h>
36#include <stdio.h>
37#include <stdlib.h>
38#include <string.h>

--- 87 unchanged lines hidden (view full) ---

126 er.phy = phy;
127 er.reg = reg;
128 er.val = val;
129 if (ioctl(cfg->fd, IOETHERSWITCHSETPHYREG, &er) != 0)
130 err(EX_OSERR, "ioctl(IOETHERSWITCHSETPHYREG)");
131}
132
133static void
31
32#include <ctype.h>
33#include <err.h>
34#include <errno.h>
35#include <fcntl.h>
36#include <stdio.h>
37#include <stdlib.h>
38#include <string.h>

--- 87 unchanged lines hidden (view full) ---

126 er.phy = phy;
127 er.reg = reg;
128 er.val = val;
129 if (ioctl(cfg->fd, IOETHERSWITCHSETPHYREG, &er) != 0)
130 err(EX_OSERR, "ioctl(IOETHERSWITCHSETPHYREG)");
131}
132
133static void
134set_port_vlangroup(struct cfg *cfg, char *argv[])
134set_port_vid(struct cfg *cfg, char *argv[])
135{
136 int v;
137 etherswitch_port_t p;
138
139 v = strtol(argv[1], NULL, 0);
135{
136 int v;
137 etherswitch_port_t p;
138
139 v = strtol(argv[1], NULL, 0);
140 if (v < 0 || v >= cfg->info.es_nvlangroups)
141 errx(EX_USAGE, "vlangroup must be between 0 and %d", cfg->info.es_nvlangroups-1);
140 if (v < 0 || v > IEEE802DOT1Q_VID_MAX)
141 errx(EX_USAGE, "pvid must be between 0 and %d",
142 IEEE802DOT1Q_VID_MAX);
142 bzero(&p, sizeof(p));
143 p.es_port = cfg->unit;
144 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0)
145 err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)");
143 bzero(&p, sizeof(p));
144 p.es_port = cfg->unit;
145 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0)
146 err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)");
146 p.es_vlangroup = v;
147 p.es_pvid = v;
147 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0)
148 err(EX_OSERR, "ioctl(IOETHERSWITCHSETPORT)");
149}
150
151static void
152set_port_media(struct cfg *cfg, char *argv[])
153{
154 etherswitch_port_t p;

--- 142 unchanged lines hidden (view full) ---

297
298 bzero(&p, sizeof(p));
299 p.es_port = port;
300 p.es_ifmr.ifm_ulist = ifm_ulist;
301 p.es_ifmr.ifm_count = IFMEDIAREQ_NULISTENTRIES;
302 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0)
303 err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)");
304 printf("port%d:\n", port);
148 if (ioctl(cfg->fd, IOETHERSWITCHSETPORT, &p) != 0)
149 err(EX_OSERR, "ioctl(IOETHERSWITCHSETPORT)");
150}
151
152static void
153set_port_media(struct cfg *cfg, char *argv[])
154{
155 etherswitch_port_t p;

--- 142 unchanged lines hidden (view full) ---

298
299 bzero(&p, sizeof(p));
300 p.es_port = port;
301 p.es_ifmr.ifm_ulist = ifm_ulist;
302 p.es_ifmr.ifm_count = IFMEDIAREQ_NULISTENTRIES;
303 if (ioctl(cfg->fd, IOETHERSWITCHGETPORT, &p) != 0)
304 err(EX_OSERR, "ioctl(IOETHERSWITCHGETPORT)");
305 printf("port%d:\n", port);
305 printf("\tvlangroup: %d\n", p.es_vlangroup);
306 printf("\tpvid: %d\n", p.es_pvid);
306 printf("\tmedia: ");
307 print_media_word(p.es_ifmr.ifm_current, 1);
308 if (p.es_ifmr.ifm_active != p.es_ifmr.ifm_current) {
309 putchar(' ');
310 putchar('(');
311 print_media_word(p.es_ifmr.ifm_active, 0);
312 putchar(')');
313 }

--- 187 unchanged lines hidden (view full) ---

501 }
502 /* switch back to command mode to print configuration for last command */
503 newmode(&cfg, MODE_NONE);
504 close(cfg.fd);
505 return (0);
506}
507
508static struct cmds cmds[] = {
307 printf("\tmedia: ");
308 print_media_word(p.es_ifmr.ifm_current, 1);
309 if (p.es_ifmr.ifm_active != p.es_ifmr.ifm_current) {
310 putchar(' ');
311 putchar('(');
312 print_media_word(p.es_ifmr.ifm_active, 0);
313 putchar(')');
314 }

--- 187 unchanged lines hidden (view full) ---

502 }
503 /* switch back to command mode to print configuration for last command */
504 newmode(&cfg, MODE_NONE);
505 close(cfg.fd);
506 return (0);
507}
508
509static struct cmds cmds[] = {
509 { MODE_PORT, "vlangroup", 1, set_port_vlangroup },
510 { MODE_PORT, "pvid", 1, set_port_vid },
510 { MODE_PORT, "media", 1, set_port_media },
511 { MODE_PORT, "mediaopt", 1, set_port_mediaopt },
512 { MODE_VLANGROUP, "vlan", 1, set_vlangroup_vid },
513 { MODE_VLANGROUP, "members", 1, set_vlangroup_members },
514 { 0, NULL, 0, NULL }
515};
511 { MODE_PORT, "media", 1, set_port_media },
512 { MODE_PORT, "mediaopt", 1, set_port_mediaopt },
513 { MODE_VLANGROUP, "vlan", 1, set_vlangroup_vid },
514 { MODE_VLANGROUP, "members", 1, set_vlangroup_members },
515 { 0, NULL, 0, NULL }
516};