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
0fab728d
Commit
0fab728d
authored
Oct 14, 2020
by
Michal Wasiak
Committed by
Adam Wujek
Oct 29, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
snmp/bridge_mib: update dot1qBase
Signed-off-by:
Michal Wasiak
<
michal.wasiak@gmail.com
>
parent
a70c9d3c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
68 deletions
+43
-68
Makefile
userspace/snmpd/bridge_mib/Makefile
+1
-0
dot1qBase.c
userspace/snmpd/bridge_mib/dot1qBase.c
+35
-68
dot1qBase.h
userspace/snmpd/bridge_mib/dot1qBase.h
+5
-0
init_bridge_mib.c
userspace/snmpd/bridge_mib/init_bridge_mib.c
+2
-0
No files found.
userspace/snmpd/bridge_mib/Makefile
View file @
0fab728d
...
...
@@ -17,6 +17,7 @@ CFLAGS += -I$(BRIDGE_MIB_DIR)
BRIDGE_MIB_SRCS
+=
\
dot1dBase.c
\
dot1qBase.c
\
init_bridge_mib.c
BRIDGE_MIB_SRCS
:=
$
(
addprefix
$(BRIDGE_MIB_DIR)
/,
$(BRIDGE_MIB_SRCS)
)
userspace/snmpd/bridge_mib/dot1qBase.c
View file @
0fab728d
...
...
@@ -7,6 +7,8 @@
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "dot1qBase.h"
#include "wrsSnmp.h"
#include "snmp_shmem.h"
/** Initializes the dot1qBase module */
void
...
...
@@ -58,16 +60,16 @@ handle_dot1qVlanVersionNumber(netsnmp_mib_handler *handler,
/* a instance handler also only hands us one request at a time, so
we don't need to loop over a list of requests; we'll only get one. */
int
dot1qVlanVersionNumber
;
dot1qVlanVersionNumber
=
DOT1QVLANVERSIONNUMBER
;
switch
(
reqinfo
->
mode
)
{
case
MODE_GET
:
snmp_set_var_typed_value
(
requests
->
requestvb
,
ASN_INTEGER
,
/* XXX: a pointer to the scalar's data */
,
/* XXX: the length of the data in bytes */
);
&
dot1qVlanVersionNumber
,
sizeof
(
dot1qVlanVersionNumber
)
);
break
;
default:
/* we should never get here, so this is a really bad error */
snmp_log
(
LOG_ERR
,
"unknown mode (%d) in handle_dot1qVlanVersionNumber
\n
"
,
reqinfo
->
mode
);
...
...
@@ -87,16 +89,16 @@ handle_dot1qMaxVlanId(netsnmp_mib_handler *handler,
/* a instance handler also only hands us one request at a time, so
we don't need to loop over a list of requests; we'll only get one. */
int
dot1qMaxVlanId
;
dot1qMaxVlanId
=
RTU_VID_MAX
;
switch
(
reqinfo
->
mode
)
{
case
MODE_GET
:
snmp_set_var_typed_value
(
requests
->
requestvb
,
ASN_INTEGER
,
/* XXX: a pointer to the scalar's data */
,
/* XXX: the length of the data in bytes */
);
&
dot1qMaxVlanId
,
sizeof
(
dot1qMaxVlanId
)
);
break
;
default:
/* we should never get here, so this is a really bad error */
snmp_log
(
LOG_ERR
,
"unknown mode (%d) in handle_dot1qMaxVlanId
\n
"
,
reqinfo
->
mode
);
...
...
@@ -116,13 +118,14 @@ handle_dot1qMaxSupportedVlans(netsnmp_mib_handler *handler,
/* a instance handler also only hands us one request at a time, so
we don't need to loop over a list of requests; we'll only get one. */
int
dot1qMaxSupportedVlans
;
dot1qMaxSupportedVlans
=
RTU_VID_MAX
;
switch
(
reqinfo
->
mode
)
{
case
MODE_GET
:
snmp_set_var_typed_value
(
requests
->
requestvb
,
ASN_UNSIGNED
,
/* XXX: a pointer to the scalar's data */
,
/* XXX: the length of the data in bytes */
);
&
dot1qMaxSupportedVlans
,
sizeof
(
dot1qMaxSupportedVlans
)
);
break
;
...
...
@@ -145,13 +148,27 @@ handle_dot1qNumVlans(netsnmp_mib_handler *handler,
/* a instance handler also only hands us one request at a time, so
we don't need to loop over a list of requests; we'll only get one. */
int
nvlans
=
0
;
int
i
;
struct
rtu_vlan_table_entry
vlan_tab_local
[
NUM_VLANS
];
switch
(
reqinfo
->
mode
)
{
case
MODE_GET
:
if
(
0
!=
shmem_rtu_read_vlans
(
vlan_tab_local
))
{
return
SNMP_ERR_GENERR
;
}
for
(
i
=
0
;
i
<
NUM_VLANS
;
i
++
)
{
if
((
vlan_tab_local
[
i
].
drop
!=
0
)
&&
(
vlan_tab_local
[
i
].
port_mask
==
0x0
))
continue
;
nvlans
++
;
}
snmp_set_var_typed_value
(
requests
->
requestvb
,
ASN_UNSIGNED
,
/* XXX: a pointer to the scalar's data */
,
/* XXX: the length of the data in bytes */
);
&
nvlans
,
sizeof
(
nvlans
)
);
break
;
...
...
@@ -169,69 +186,19 @@ handle_dot1qGvrpStatus(netsnmp_mib_handler *handler,
netsnmp_agent_request_info
*
reqinfo
,
netsnmp_request_info
*
requests
)
{
int
ret
;
/* We are never called for a GETNEXT if it's registered as a
"instance", as it's "magically" handled for us. */
/* a instance handler also only hands us one request at a time, so
we don't need to loop over a list of requests; we'll only get one. */
int
dot1qGvrpStatus
;
dot1qGvrpStatus
=
DOT1QGVRPSTATUS_DISABLED
;
switch
(
reqinfo
->
mode
)
{
case
MODE_GET
:
snmp_set_var_typed_value
(
requests
->
requestvb
,
ASN_INTEGER
,
/* XXX: a pointer to the scalar's data */
,
/* XXX: the length of the data in bytes */
);
break
;
/*
* SET REQUEST
*
* multiple states in the transaction. See:
* http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
*/
case
MODE_SET_RESERVE1
:
/* or you could use netsnmp_check_vb_type_and_size instead */
ret
=
netsnmp_check_vb_type
(
requests
->
requestvb
,
ASN_INTEGER
);
if
(
ret
!=
SNMP_ERR_NOERROR
)
{
netsnmp_set_request_error
(
reqinfo
,
requests
,
ret
);
}
break
;
case
MODE_SET_RESERVE2
:
/* XXX malloc "undo" storage buffer */
if
(
/* XXX if malloc, or whatever, failed: */
)
{
netsnmp_set_request_error
(
reqinfo
,
requests
,
SNMP_ERR_RESOURCEUNAVAILABLE
);
}
break
;
case
MODE_SET_FREE
:
/* XXX: free resources allocated in RESERVE1 and/or
RESERVE2. Something failed somewhere, and the states
below won't be called. */
break
;
case
MODE_SET_ACTION
:
/* XXX: perform the value change here */
if
(
/* XXX: error? */
)
{
netsnmp_set_request_error
(
reqinfo
,
requests
,
/* some error */
);
}
break
;
case
MODE_SET_COMMIT
:
/* XXX: delete temporary storage */
if
(
/* XXX: error? */
)
{
/* try _really_really_ hard to never get to this point */
netsnmp_set_request_error
(
reqinfo
,
requests
,
SNMP_ERR_COMMITFAILED
);
}
break
;
case
MODE_SET_UNDO
:
/* XXX: UNDO and return to previous value for the object */
if
(
/* XXX: error? */
)
{
/* try _really_really_ hard to never get to this point */
netsnmp_set_request_error
(
reqinfo
,
requests
,
SNMP_ERR_UNDOFAILED
);
}
&
dot1qGvrpStatus
,
sizeof
(
dot1qGvrpStatus
));
break
;
default:
...
...
userspace/snmpd/bridge_mib/dot1qBase.h
View file @
0fab728d
...
...
@@ -5,6 +5,11 @@
#ifndef DOT1QBASE_H
#define DOT1QBASE_H
#define DOT1QVLANVERSIONNUMBER 1
#define DOT1QGVRPSTATUS_ENABLED 1
#define DOT1QGVRPSTATUS_DISABLED 2
/* function declarations */
void
init_dot1qBase
(
void
);
Netsnmp_Node_Handler
handle_dot1qVlanVersionNumber
;
...
...
userspace/snmpd/bridge_mib/init_bridge_mib.c
View file @
0fab728d
...
...
@@ -12,6 +12,7 @@
#include "dot1dBasePortTable/dot1dBasePortTable.h"
#include "dot1dStaticTable/dot1dStaticTable.h"
#include "dot1dTpFdbTable/dot1dTpFdbTable.h"
#include "dot1qBase.h"
#include "dot1qFdbTable/dot1qFdbTable.h"
#include "dot1qTpFdbTable/dot1qTpFdbTable.h"
...
...
@@ -21,6 +22,7 @@ void init_bridge_mib(void)
init_dot1dBasePortTable
();
init_dot1dStaticTable
();
init_dot1dTpFdbTable
();
init_dot1qBase
();
init_dot1qFdbTable
();
init_dot1qTpFdbTable
();
}
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