Steps to cerate a MIB and a SNMP agent
I have been trying to understand how to create a MIB : here what I did so far : 

I created a MIB, and tried to allocate values to new OID => fail

Here is the MIB : 

    TEST-MIB DEFINITIONS ::= BEGIN

    IMPORTS
	MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
	OBJECT-TYPE, Integer32,MODULE-IDENTITY FROM SNMPv2-SMI;




    test 	MODULE-IDENTITY
		LAST-UPDATED "201112190200Z"
		ORGANIZATION "blah"
		CONTACT-INFO
			"please"		
		DESCRIPTION
			"I am stuck"
		REVISION	"201112190200Z"
		DESCRIPTION
			"initial Draft"
		::= { iso org(3) dod(6) internet(1) private(4) enterprises(1) 39106 }

    testResearch               OBJECT IDENTIFIER ::= { test 2 }

    testVar	OBJECT-TYPE
	    SYNTAX Integer32
	    MAX-ACCESS	read-write
	    STATUS	current
	    DESCRIPTION
	    	"just for testing"
	    ::=	{ testResearch 1}

    -- conformance information

    testMIBConformance OBJECT IDENTIFIER ::= { test 999 }
    testMIBCompliances OBJECT IDENTIFIER ::= { testMIBConformance 1 }
    testMIBGroups      OBJECT IDENTIFIER ::= { testMIBConformance 2 }

    -- compliance statements

    testMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
            "blah."
        MODULE  -- this module
        MANDATORY-GROUPS { testGroup }
        ::= { testMIBCompliances 1 }

    -- units of conformance

    testGroup OBJECT-GROUP
        OBJECTS   { testVar }
        STATUS    current
        DESCRIPTION
            "The draft"
        ::= { testMIBGroups 1 }

    END


I then 

- validated this MIB against smilint , 
- put it in ~/.snmp/mibs/
- have the rwcommunity string for all host, with no OID restriction
- restarted the snmpd daemon (On Debian)

So far, all good.

I then tried to see if the daemon knows about this new enterprise, and I did : 

    snmpwalk -v2c -m +ALL  localhost  .1.3.6.1.4.1.39106

which outputs : 
    TEST-MIB::expatjob = No Such Object available on this agent at this OID

So I guess That snmpd is telling me he can't find anything under this tree, because nothing has been set yet. 

So I try to set this test variable with snmpset on a shell : 

    snmpset  -v2c -m +ALL localhost .1.3.6.1.4.1.39106.2.1 i 111
outputs :

    Error in packet.
    Reason: notWritable (That object does not support modification)
    Failed object: TEST-MIB::testVar


I am a bit confused, as I don't really know why snmpd can't walk the enterprise tree in the first place, and why I can't set these variables. I am sure I missed an important peace of the puzzle.


Steps to cerate a MIB and a SNMP agent
===

I have been trying to understand how to create a MIB : here what I did so far : 

I created a MIB, and tried to allocate values to new OID => fail

Here is the MIB : 

    TEST-MIB DEFINITIONS ::= BEGIN

    IMPORTS
	MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
	OBJECT-TYPE, Integer32,MODULE-IDENTITY FROM SNMPv2-SMI;




    test 	MODULE-IDENTITY
		LAST-UPDATED "201112190200Z"
		ORGANIZATION "blah"
		CONTACT-INFO
			"please"		
		DESCRIPTION
			"I am stuck"
		REVISION	"201112190200Z"
		DESCRIPTION
			"initial Draft"
		::= { iso org(3) dod(6) internet(1) private(4) enterprises(1) 39106 }

    testResearch               OBJECT IDENTIFIER ::= { test 2 }

    testVar	OBJECT-TYPE
	    SYNTAX Integer32
	    MAX-ACCESS	read-write
	    STATUS	current
	    DESCRIPTION
	    	"just for testing"
	    ::=	{ testResearch 1}

    -- conformance information

    testMIBConformance OBJECT IDENTIFIER ::= { test 999 }
    testMIBCompliances OBJECT IDENTIFIER ::= { testMIBConformance 1 }
    testMIBGroups      OBJECT IDENTIFIER ::= { testMIBConformance 2 }

    -- compliance statements

    testMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
            "blah."
        MODULE  -- this module
        MANDATORY-GROUPS { testGroup }
        ::= { testMIBCompliances 1 }

    -- units of conformance

    testGroup OBJECT-GROUP
        OBJECTS   { testVar }
        STATUS    current
        DESCRIPTION
            "The draft"
        ::= { testMIBGroups 1 }

    END


I then 

- validated this MIB against smilint , 
- put it in ~/.snmp/mibs/
- have the rwcommunity string for all host, with no OID restriction
- restarted the snmpd daemon (On Debian)

So far, all good.

I then tried to see if the daemon knows about this new enterprise, and I did : 

    snmpwalk -v2c -m +ALL  localhost  .1.3.6.1.4.1.39106

which outputs : 
    TEST-MIB::expatjob = No Such Object available on this agent at this OID

So I guess That snmpd is telling me he can't find anything under this tree, because nothing has been set yet. 

So I try to set this test variable with snmpset on a shell : 

    snmpset  -v2c -m +ALL localhost .1.3.6.1.4.1.39106.2.1 i 111
outputs :

    Error in packet.
    Reason: notWritable (That object does not support modification)
    Failed object: TEST-MIB::testVar


I am a bit confused, as I don't really know why snmpd can't walk the enterprise tree in the first place, and why I can't set these variables. I am sure I missed an important peace of the puzzle.

