On Tue, Jan 5, 2016 at 11:16 AM, David Hankins <dhank...@twitter.com> wrote:

> https://sourceforge.net/p/net-snmp/code/merge-requests/3/
>
> I had quite a lot of fun on this project, and I'd like it to be merged
> upstream.  I know it's 71 commits, and may be easier to just read the final
> 'snmp_api.c'.  I'm also guessing all the source owners are volunteers, who
> are busy.
>
> ​Anyway, it's been a few weeks, and I'm not complaining, but I'd
> appreciate some comment on what you'd like to see improved to accept it
> before I forget everything.​
>
> I did this to expose the asynchronous API of NetSNMP of old which I'm
> accustomed to, and (predictably) have been able to realize some significant
> improvements in monitoring delay, experimentally.
>
>
> ​Things I learned / issues to spur discussion;
>
> I used the new 'Capsule' API, which unfortunately makes it rely on Python
> 2.7 or later.  In retrospect, it might have been better to make the Session
> and PDU objects "custom types," so that they can be accessed by Python
> users similarly to the C structures they approximate, rather than what I
> wound up doing for the callback function - making a dict that approximates
> the C structure.
>
> ​I dug out placeholders for a grepped-out list of API functions.  No doubt
> some are internal and should be deleted, but it represents opportunities
> for future work to expose more of the C API to Python users.​  I
> prioritized what I needed, and did what I could in the week I had.
>
> I've used this library since the CMU-SNMP days, and I noticed the C API
> was updated in a way that reduced some functionality from old CMU->UCD->NET
> - I'm referring to the abstraction layer for SNMP transports.  It used to
> be (or so I remember) there was a sockaddr_in on the PDU structure, so you
> could open a session with no peername, and then set the target address on a
> PDU-by-PDU basis (this is important, for example, in monitoring systems at
> scale to control the number of open sockets and allocated socket buffer).
> The new abstraction structure puts an opaque object there, and the only way
> to get the same functionality is to create a 'indexed sockaddr' object
> manually, guessing that's what the default (UDP) transport is going to
> require.  A little hinky, but it works.  But even if you have a reference
> to the non-default transport you're using, there isn't a transport API
> function to resolve a new opaque object (say from a hostname or IP address)
> on demand.  I'd be happy to submit a C API extension for merging if there
> is consensus - I think there should be a way to resolve an opaque object
> onto a PDU from a {multi,single}-session pointer and peername.  It should
> throw an error on transports that don't support multiple endpoints (e.g.
> TCP).
>
> ​The netsnmp-python setup.py sets its version to 1.0a1.  I think this
> should simply be the netsnmp release version (and it should default to link
> statically off --basedir=.. if possible, as most users build eggs which
> should be as hermetic as possible).​  Any objection to changing one or both
> of those?
>
>
​The versioning part of this is so trivial, I just did it.
https://sourceforge.net/p/net-snmp/code/merge-requests/4/​



> ​We'd really like to get MIB modules loaded out of egg or wheel files as
> well, talking about hermetic eggs, rather than having the runtime try to
> find them in magic local directories.​  This allows us to build python
> binaries that are fully self contained, and all changes (including mib
> updates) follow our software release for same.  To do this I think the C
> API will have to change, so that we can insert an abstraction layer where
> the Python package loader is used instead of system file open routines to
> read the MIB files.
>
> --
> Network Tools & Automation
> Twitter, Inc.
>



-- 
Network Tools & Automation
Twitter, Inc.
------------------------------------------------------------------------------
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to