Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Switch - Software
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
86
Issues
86
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Switch - Software
Commits
6354948e
Commit
6354948e
authored
Oct 09, 2020
by
Alessandro Rubini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
userspace/tools: optionally obey dotconfig for vlan number
Signed-off-by:
Alessandro Rubini
<
rubini@gnudd.com
>
parent
1b6293ed
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
5 deletions
+21
-5
radiusvlan.c
userspace/tools/radiusvlan.c
+21
-5
No files found.
userspace/tools/radiusvlan.c
View file @
6354948e
...
...
@@ -29,23 +29,25 @@
#endif
#define IS_PC (!IS_WRS)
/* This is a set of global variables, that convey program status */
char
*
prgname
;
/* argv[0], for my laziness */
int
verbose
;
int
rvlan_pmask
=
~
0
;
int
rvlan_change_pending
;
/* wrsw_vlans must be called globally */
char
*
rvlan_radius_servers
;
/* strdup from config */
char
*
rvlan_radius_secret
;
int
rvlan_auth_vlan
,
rvlan_noauth_vlan
;
int
rvlan_auth_vlan
,
rvlan_noauth_vlan
,
rvlan_obey_dotconfig
;
struct
rvlan_dev
{
char
*
name
;
/* Allocated */
int
portnr
;
int
ifindex
;
int
up_now
;
/* Current (detected) status 0-1 */
char
peer_mac
[
16
];
/* Detected from traffic, as string */
int
poll_fd
;
/* Sniffing or radclient output */
int
pid
;
/* Running child */
int
fsm_state
;
/* During sniff/auth */
int
chosen_vlan
;
int
dotconfig_vlan
,
chosen_vlan
;
unsigned
char
mac
[
ETH_ALEN
];
/* Own mac address */
char
radbuffer
[
10240
];
int
radbuffer_size
;
...
...
@@ -298,6 +300,8 @@ int rvlan_fsm(struct rvlan_dev *dev, fd_set *rdset)
if
(
s
)
sscanf
(
s
+
1
,
"%i"
,
&
dev
->
chosen_vlan
);
}
if
(
rvlan_obey_dotconfig
)
dev
->
chosen_vlan
=
dev
->
dotconfig_vlan
;
if
(
verbose
)
printf
(
"dev %s: vlan %i "
,
dev
->
name
,
dev
->
chosen_vlan
);
...
...
@@ -355,6 +359,8 @@ static int rvlan_enumerate_devices(char *prefix)
FILE
*
f
;
struct
dirent
*
ent
;
struct
rvlan_dev
*
dev
;
char
*
s
,
cfgname
[
40
];
int
portnr
,
mode_access
;
d
=
opendir
(
dirname
);
if
(
!
d
)
{
...
...
@@ -370,9 +376,7 @@ static int rvlan_enumerate_devices(char *prefix)
if
(
IS_WRS
)
{
/* Check configuration of this port */
int
portnr
=
-
1
,
mode_access
;
char
cfgname
[
40
];
portnr
=
-
1
;
sscanf
(
ent
->
d_name
+
strlen
(
prefix
),
"%d"
,
&
portnr
);
if
(
portnr
<
0
)
{
fprintf
(
stderr
,
"%s:
\"
%s
\"
has no number
\n
"
,
...
...
@@ -399,7 +403,15 @@ static int rvlan_enumerate_devices(char *prefix)
dev
=
calloc
(
1
,
sizeof
(
*
dev
));
dev
->
name
=
strdup
(
ent
->
d_name
);
dev
->
portnr
=
portnr
;
dev
->
poll_fd
=
-
1
;
if
(
IS_WRS
)
{
sprintf
(
cfgname
,
"VLANS_PORT%02d_VID"
,
portnr
);
s
=
libwr_cfg_get
(
cfgname
);
if
(
s
)
sscanf
(
s
,
"%i"
,
&
dev
->
dotconfig_vlan
);
}
/* read ifindex from sysfs -- instead of ioctl(SIOCGIFINDEX) */
sprintf
(
path
,
"%s/%s/ifindex"
,
dirname
,
dev
->
name
);
f
=
fopen
(
path
,
"r"
);
...
...
@@ -653,6 +665,10 @@ int main(int argc, char **argv)
exit
(
1
);
}
s
=
libwr_cfg_get
(
"RVLAN_OBEY_DOTCONFIG"
);
if
(
s
&&
s
[
0
]
==
'y'
)
rvlan_obey_dotconfig
=
1
;
rvlan_radius_servers
=
libwr_cfg_get
(
"RVLAN_RADIUS_SERVERS"
);
rvlan_radius_secret
=
libwr_cfg_get
(
"RVLAN_RADIUS_SECRET"
);
if
(
!
rvlan_radius_servers
||
!
rvlan_radius_secret
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment