Deleted Added
full compact
ifvlan.c (183554) ifvlan.c (186101)
1/*
2 * Copyright (c) 1999
3 * Bill Paul <wpaul@ctr.columbia.edu>. 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

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

51#include <unistd.h>
52#include <err.h>
53#include <errno.h>
54
55#include "ifconfig.h"
56
57#ifndef lint
58static const char rcsid[] =
1/*
2 * Copyright (c) 1999
3 * Bill Paul <wpaul@ctr.columbia.edu>. 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

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

51#include <unistd.h>
52#include <err.h>
53#include <errno.h>
54
55#include "ifconfig.h"
56
57#ifndef lint
58static const char rcsid[] =
59 "$FreeBSD: head/sbin/ifconfig/ifvlan.c 183554 2008-10-02 20:03:41Z sam $";
59 "$FreeBSD: head/sbin/ifconfig/ifvlan.c 186101 2008-12-15 01:06:49Z sam $";
60#endif
61
62#define NOTAG ((u_short) -1)
63
64static struct vlanreq params = {
65 .vlr_tag = NOTAG,
66};
67

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

114{
115 if (params.vlr_tag != NOTAG && params.vlr_parent[0] != '\0') {
116 ifr->ifr_data = (caddr_t) &params;
117 if (ioctl(s, SIOCSETVLAN, (caddr_t)ifr) == -1)
118 err(1, "SIOCSETVLAN");
119 }
120}
121
60#endif
61
62#define NOTAG ((u_short) -1)
63
64static struct vlanreq params = {
65 .vlr_tag = NOTAG,
66};
67

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

114{
115 if (params.vlr_tag != NOTAG && params.vlr_parent[0] != '\0') {
116 ifr->ifr_data = (caddr_t) &params;
117 if (ioctl(s, SIOCSETVLAN, (caddr_t)ifr) == -1)
118 err(1, "SIOCSETVLAN");
119 }
120}
121
122static
123DECL_CMD_FUNC(setvlantag, val, d)
122static void
123getvlantag(const char *val)
124{
124{
125 struct vlanreq vreq;
126 u_long ul;
127 char *endp;
128
129 ul = strtoul(val, &endp, 0);
130 if (*endp != '\0')
131 errx(1, "invalid value for vlan");
132 params.vlr_tag = ul;
133 /* check if the value can be represented in vlr_tag */
134 if (params.vlr_tag != ul)
135 errx(1, "value for vlan out of range");
125 u_long ul;
126 char *endp;
127
128 ul = strtoul(val, &endp, 0);
129 if (*endp != '\0')
130 errx(1, "invalid value for vlan");
131 params.vlr_tag = ul;
132 /* check if the value can be represented in vlr_tag */
133 if (params.vlr_tag != ul)
134 errx(1, "value for vlan out of range");
135}
136
136
137 if (getvlan(s, &ifr, &vreq) != -1)
138 vlan_set(s, &ifr);
139 else
140 clone_setcallback(vlan_create);
137static
138DECL_CMD_FUNC(setvlantag_clone, val, d)
139{
140 getvlantag(val);
141 clone_setcallback(vlan_create);
141}
142
143static
142}
143
144static
144DECL_CMD_FUNC(setvlandev, val, d)
145DECL_CMD_FUNC(setvlantag, val, d)
145{
146 struct vlanreq vreq;
147
146{
147 struct vlanreq vreq;
148
149 getvlantag(val);
150 if (getvlan(s, &ifr, &vreq) == -1)
151 errx(1, "no existing vlan");
152 vlan_set(s, &ifr);
153}
154
155static
156DECL_CMD_FUNC(setvlandev_clone, val, d)
157{
148 strlcpy(params.vlr_parent, val, sizeof(params.vlr_parent));
158 strlcpy(params.vlr_parent, val, sizeof(params.vlr_parent));
159 clone_setcallback(vlan_create);
160}
149
161
162static
163DECL_CMD_FUNC(setvlandev, val, d)
164{
165 struct vlanreq vreq;
166
167 strlcpy(params.vlr_parent, val, sizeof(params.vlr_parent));
150 if (getvlan(s, &ifr, &vreq) != -1)
168 if (getvlan(s, &ifr, &vreq) != -1)
151 vlan_set(s, &ifr);
152 else
153 clone_setcallback(vlan_create);
169 errx(1, "no existing vlan");
170 vlan_set(s, &ifr);
154}
155
156static
157DECL_CMD_FUNC(unsetvlandev, val, d)
158{
159 struct vlanreq vreq;
160
161 bzero((char *)&vreq, sizeof(struct vlanreq));

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

167 bzero((char *)&vreq.vlr_parent, sizeof(vreq.vlr_parent));
168 vreq.vlr_tag = 0;
169
170 if (ioctl(s, SIOCSETVLAN, (caddr_t)&ifr) == -1)
171 err(1, "SIOCSETVLAN");
172}
173
174static struct cmd vlan_cmds[] = {
171}
172
173static
174DECL_CMD_FUNC(unsetvlandev, val, d)
175{
176 struct vlanreq vreq;
177
178 bzero((char *)&vreq, sizeof(struct vlanreq));

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

184 bzero((char *)&vreq.vlr_parent, sizeof(vreq.vlr_parent));
185 vreq.vlr_tag = 0;
186
187 if (ioctl(s, SIOCSETVLAN, (caddr_t)&ifr) == -1)
188 err(1, "SIOCSETVLAN");
189}
190
191static struct cmd vlan_cmds[] = {
175 DEF_CLONE_CMD_ARG("vlan", setvlantag),
176 DEF_CLONE_CMD_ARG("vlandev", setvlandev),
192 DEF_CLONE_CMD_ARG("vlan", setvlantag_clone),
193 DEF_CLONE_CMD_ARG("vlandev", setvlandev_clone),
177 /* NB: non-clone cmds */
178 DEF_CMD_ARG("vlan", setvlantag),
179 DEF_CMD_ARG("vlandev", setvlandev),
180 /* XXX For compatibility. Should become DEF_CMD() some day. */
181 DEF_CMD_OPTARG("-vlandev", unsetvlandev),
182 DEF_CMD("vlanmtu", IFCAP_VLAN_MTU, setifcap),
183 DEF_CMD("-vlanmtu", -IFCAP_VLAN_MTU, setifcap),
184 DEF_CMD("vlanhwtag", IFCAP_VLAN_HWTAGGING, setifcap),

--- 22 unchanged lines hidden ---
194 /* NB: non-clone cmds */
195 DEF_CMD_ARG("vlan", setvlantag),
196 DEF_CMD_ARG("vlandev", setvlandev),
197 /* XXX For compatibility. Should become DEF_CMD() some day. */
198 DEF_CMD_OPTARG("-vlandev", unsetvlandev),
199 DEF_CMD("vlanmtu", IFCAP_VLAN_MTU, setifcap),
200 DEF_CMD("-vlanmtu", -IFCAP_VLAN_MTU, setifcap),
201 DEF_CMD("vlanhwtag", IFCAP_VLAN_HWTAGGING, setifcap),

--- 22 unchanged lines hidden ---