I couldn't find an existing function to convert a prefix length to a netmask, so I just wrote my own. Net SNMP version is 5.7.2. Here is the patch:
--- route_ioctl.c.old 2012-10-09 18:28:58.000000000 -0400
+++ route_ioctl.c 2014-01-21 10:30:32.239381288 -0500
@@ -114,7 +114,7 @@
DEBUGMSGTL(("access:route"," via %s\n", DEBUGSTR));
mask.sin_family = AF_INET;
- mask.sin_addr.s_addr = htonl(0);
+ mask.sin_addr.s_addr = entry->rt_pfx_len ? htonl((( ((uint32_t)1) <<
(32-entry->rt_pfx_len)) - 1) ^ 0xffffffffU) : 0;
DEBUGSTR = inet_ntoa(mask.sin_addr);
DEBUGMSGTL(("access:route"," mask %s\n", DEBUGSTR));
Daniel
-----Original Message-----
From: Daniel Tingstrom [mailto:[email protected]]
Sent: Tuesday, January 21, 2014 9:50 AM
To: [email protected]
Subject: RE: Creating inetCidrRouteTable row entries
FYI, the prefix length can be accessed by entry->rt_pfx_len in this method
(_netsnmp_ioctl_route_set_v4). I wrote a little code to convert
entry->rt_pfx_len (the prefix length) to a netmask (unsigned int) and
tried it out. Adding new routes via inetCidrRouteTable seems to work now.
If anyone's interested, I could provide a patch.
Daniel
-----Original Message-----
From: Daniel Tingstrom [mailto:[email protected]]
Sent: Friday, January 17, 2014 10:41 AM
To: [email protected]
Subject: Creating inetCidrRouteTable row entries
Hi,
I need to add a static route entry in linux via SNMP. So I am using
inetCidrRouteTable. Unfortunately, the implementation of
_netsnmp_ioctl_route_set_v4() in route_ioctl.c always hardcodes the
route's netmask to 0.0.0.0, allowing only default gateway routes to be
added.
I had to manually change the following line:
mask.sin_addr.s_addr = htonl(0);
to:
mask.sin_addr.s_addr = htonl(0xffff0000);
for the following snmpset command to work:
snmpset -l authPriv -A password -X password -a SHA -x AES -u authPrivUser
localhost
IP-FORWARD-MIB::inetCidrRouteStatus.1.4.20.20.0.0.16.2.0.0.1.4.10.10.0.1 i
4
IP-FORWARD-MIB::inetCidrRouteIfIndex.1.4.20.20.0.0.16.2.0.0.1.4.10.10.0.1
i
3
IP-FORWARD-MIB::inetCidrRouteMetric1.1.4.20.20.0.0.16.2.0.0.1.4.10.10.0.1
i 0 IP-FORWARD-MIB::inetCidrRouteType.1.4.20.20.0.0.16.2.0.0.1.4.10.10.0.1
i
4
I want to do the equivalent of: ip route add 20.20.0.0/16 via 10.10.0.1
I am new to SNMP and so I could be doing this wrong or making incorrect
assumptions. Perhaps there is an alternative method to adding static
routes that are not default gateways? Or is this simply a bug?
Thanks,
Daniel
----------------------------------------------------------------------------
--
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
smime.p7s
Description: S/MIME cryptographic signature
------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________ Net-snmp-coders mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/net-snmp-coders
