📄 design.sgml
字号:
<!DOCTYPE book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [<!entity widgets SYSTEM "widget_hierarchy.sgml"><!entity turtletalk SYSTEM "turtletalk.sgml">]><book id="gxsnmp-design"> <bookinfo> <title>GXSNMP Design Specifications</title> <releaseinfo>April 10, 1999</releaseinfo> <authorgroup> <author> <firstname>Jochen</firstname> <surname>Friedrich</surname> <affiliation> <address><email>jochen@scram.de</email></address> </affiliation> </author> <author> <firstname>Gregory</firstname> <surname>McLean</surname> <affiliation> <address><email>gregm@comstar.net</email></address> </affiliation> </author> <author> <firstname>John</firstname> <surname>Schulien</surname> <affiliation> <address> <email>jms@uic.edu</email> </address> </affiliation> </author> <author> <firstname>Craig</firstname> <surname>Small</surname> <affiliation> <address><email>csmall@eye-net.com.au</email></address> </affiliation> </author> </authorgroup> <legalnotice> <para>This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</para> <para>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</para> <para>You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</para> <para>For more details see the file COPYING in the source distribution of GXSNMP.</para> </legalnotice> </bookinfo> <chapter id="internal-design"> <title>GXSNMP Internal Design</title> <sect1> <title>Design Goals</title> <para> GXSNMP is a network management application that is intended to grow in the future to provide all of the features one would expect to find in the commerical offerings. </para> </sect1> <sect1> <title>Basic organization</title> <para> FIXME! </para> </sect1><!-- Widget Hierarchy --> &widgets;<!-- Plugins --> <sect1> <title>Plugins</title> <para> FIXME! </para> </sect1> </chapter> <chapter id="snmpv3-design"> <title>SNMPv3 Design</title> <sect1> <title>Introduction</title> <para> SNMPv3 is currently defined in the RFCs 2271 - 2275. RFC2271 gives an overview about SNMPv3 and defines separate modules for the standard implementation. This document explains how these modules are implemented in this library. Additionally, draft-ietf-snmpv2-coex-??.txt is of interest on how to combine SNMPv3 and older versions together in one application. </para> </sect1> <sect1> <title>Implementation details</title> <para> This section will deal with the actual implementation of SNMPv3 in the snmp library. We also will give reference to the relevant Request For Comments (RFC). </para> <para>RFC 2271 defines the following modules</para> <itemizedlist> <listitem><para>dispatcher (RFC2272)</para> <listitem><para>message processing subsystem (RFC2272)</para> <listitem><para>security subsystem (RFC2274)</para> <listitem><para>access control subsystem (RFC2275)</para> <listitem><para>application (RFC2273)</para> </itemizedlist> <para>The dispatcher is special in that only one instance of dispatcher canexist in a given SNMP entity. Even an application may register differentmodules with the SNM engine for different functionality (e.g. a combinedSNMP agent with proxy). The dispatcher is implemented in C using a set offunctions, while all other modules must provide their interface as structof functions to the dispatcher in init time (poor mans objects :-) ).Additionally, the dispatcher must take care of the configuration file andprovide an API for the SNMP modules to read and write their variables. </para> <para> These are the primitives of the RFC2271 properly sorted by module: </para> <itemizedlist> <listitem><para>application</para> <itemizedlist> <listitem><para>processPdu</para> <listitem><para>processResponsePdu</para> </itemizedlist> <listitem><para>dispatcher</para> <itemizedlist> <listitem><para>sendPdu</para> <listitem><para>returnResponsePdu</para> <listitem><para>registerContextEngineID</para> <listitem><para>unregisterContextEngineID</para> </itemizedlist> <listitem><para>message processing subsystem</para> <itemizedlist> <listitem><para>prepareOutgoingMessage</para> <listitem><para>prepareResponseMessage</para> <listitem><para>prepareDataElements</para> <listitem><para>releaseState</para> </itemizedlist> <listitem><para>access control subsystem</para> <itemizedlist> <listitem><para>isAccessAllowed</para> </itemizedlist> <listitem><para>security subsystem</para> <itemizedlist> <listitem><para>generateRequestMsg</para> <listitem><para>processIncomingMsg</para> <listitem><para>generateResponseMsg</para> </itemizedlist> </itemizedlist> <para>Additionally, an initialization function must be provided by each moduleand a point of registration by the dispatcher for the different types of modules. </para> <para>Order of Initialization</para> <itemizedlist> <listitem><para>dispatcher is initialized</para> <listitem><para>Each message processing subsystem is initialized. It will resgister with the dispatcher by model number and provides a struct of the primitives.</para> <listitem><para>Each security subsystem registers.</para> <listitem><para>Each access subsystem resisters.</para> </itemizedlist> <para> Now the application can start registering their services using the public function registerContextID. </para> </sect1> </chapter><!-- Turtle Talk --> &turtletalk;<!-- End TurtleTalk --> </book><!-- Keep this comment at the end of the fileLocal variables:mode: sgmlsgml-omittag:tsgml-shorttag:tsgml-minimize-attributes:nilsgml-always-quote-attributes:tsgml-indent-step:2sgml-indent-data:tsgml-parent-document:nilsgml-exposed-tags:nilsgml-local-catalogs:nilsgml-local-ecat-files:nil-->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -