Deleted Added
sdiff udiff text old ( 249748 ) new ( 249752 )
full compact
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 249752 2013-04-22 05:52:18Z adrian $
27 */
28
29#include <sys/cdefs.h>
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
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);
140 if (v < 0 || v > IEEE802DOT1Q_VID_MAX)
141 errx(EX_USAGE, "pvid must be between 0 and %d",
142 IEEE802DOT1Q_VID_MAX);
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)");
147 p.es_pvid = v;
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);
306 printf("\tpvid: %d\n", p.es_pvid);
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[] = {
510 { MODE_PORT, "pvid", 1, set_port_vid },
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};