-- ****************************************************************
-- FS NAT Configuration and Statistics MIB
--   
-- MAR 2015, zhaoguoqiang
--   
-- Copyright (c) 2014 by FS.COM Inc..
-- All rights reserved.
--   
-- ****************************************************************


-- Start module
FS-ROUTER-NAT-MIB DEFINITIONS ::= BEGIN

-- Start external defined node
IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Integer32,
    Counter32,
    Gauge32,
    Unsigned32,
    Counter64,
    IpAddress
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION,
    DisplayString,
    MacAddress,
    RowStatus,
    TruthValue
        FROM SNMPv2-TC
    InterfaceIndex
        FROM IF-MIB
    fsMgmt
        FROM FS-SMI;
-- End external defined node


-- Start root node
fsNatMIB MODULE-IDENTITY
        LAST-UPDATED "201503020000Z"
        ORGANIZATION "FS.COM Inc.."
        CONTACT-INFO
                "E-mail: https://www.fs.com/live_chat_service_mail.html"
        DESCRIPTION
                "This module defines fs nat mibs."

        REVISION    "201503020000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { fsMgmt 136}                    
        
        FSNatType ::= TEXTUAL-CONVENTION
          STATUS  current
          DESCRIPTION
             "inside outside application."
          SYNTAX INTEGER {
                     inside(1),
                     outside(2),
                     application(3)
                         }
        
        FSNatSrcDstType ::= TEXTUAL-CONVENTION
          STATUS  current
          DESCRIPTION
             "source or destination."
          SYNTAX INTEGER {
                     source(1),
                     destination(2)
                         }  
                                         
        FSNatTcpUdpType ::= TEXTUAL-CONVENTION
          STATUS  current
          DESCRIPTION
             "tcp udp or all."
          SYNTAX INTEGER {
                     tcp(1),
                     udp(2),
                     all(3)
                         }  
                         
       FSNatPoolAddressntmskprefixFlag ::=  TEXTUAL-CONVENTION
          STATUS  current
          DESCRIPTION
             "netmask or prefix-length."
          SYNTAX INTEGER {
                     netmask(1),
                     prefix-length(2)
                         } 
                                      
-- End root node
  
        fsNatMIBObjects OBJECT IDENTIFIER ::= { fsNatMIB 1 } 
     -- WIFI MIB    


-- Node definitions
        fsNatSettingObjects OBJECT IDENTIFIER ::= { fsNatMIBObjects  1 } 
        fsNatPoolAddressObjects OBJECT IDENTIFIER ::= { fsNatMIBObjects  2 }
        fsNatInterfaceObjects OBJECT IDENTIFIER ::= { fsNatMIBObjects 3 }
        
 
-- Start NatSetting objects       
        fsNatSettingTable OBJECT-TYPE  
            SYNTAX SEQUENCE OF FSNatSettingEntry
            MAX-ACCESS            not-accessible
            STATUS                current
            DESCRIPTION
                "setting nat rule"
            ::= { fsNatSettingObjects 1 }
                
        fsNatSettingEntry OBJECT-TYPE
            SYNTAX FSNatSettingEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "the router setting nat rule entry."
            INDEX { fsNatSettingIndex }
            ::= { fsNatSettingTable 1 } 
        
        FSNatSettingEntry::=
            SEQUENCE { 
            	  fsNatSettingIndex
            		Integer32,
            		fsNatSettingisno
            		Integer32,
            		fsNatSettingtype
            		FSNatType,
            		fsNatSettingsrcdst
            		FSNatSrcDstType,
            		fsNatSettingacltype
            		Integer32,
            		fsNatSettingaclnumber
            		Integer32,
            		fsNatSettingaclname
            		DisplayString,
            		fsNatSettingstaticrule
            		Integer32,
            		fsNatSettingproto
            		FSNatTcpUdpType,
            		fsNatSettinginlocalip
            		IpAddress,
            		fsNatSettinginglobalip
            		IpAddress,
            		fsNatSettingnetmask
            		IpAddress,
            		fsNatSettinglocalport
            		Integer32,
            		fsNatSettingglobalport
            		Integer32,
            		fsNatSettingmatchinterface
            		Integer32,
            		fsNatSettingpermisinside
            		Integer32,
            		fsNatSettinginterface
            		Integer32,
                fsNatSettingpool
            		DisplayString,
            		fsNatSettingdstchange
            		IpAddress,
            		fsNatSettingsrcchange
            		IpAddress
             }                
        
        fsNatSettingIndex OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-only
            STATUS current
            DESCRIPTION
                "nat setting index."
            ::= { fsNatSettingEntry 1 }
            
        fsNatSettingisno OBJECT-TYPE
            SYNTAX Integer32(0..1)
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting del rule."
            ::= { fsNatSettingEntry 2 }    
            
        fsNatSettingtype OBJECT-TYPE
            SYNTAX FSNatType
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting inside outside application."
            ::= { fsNatSettingEntry 3 }
        
        fsNatSettingsrcdst OBJECT-TYPE
            SYNTAX FSNatSrcDstType
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting src or dst choice."
            ::= { fsNatSettingEntry 4 }
            
        fsNatSettingacltype OBJECT-TYPE
            SYNTAX Integer32(0..1)
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting acl type."
            ::= { fsNatSettingEntry 5 }
            
        fsNatSettingaclnumber OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting acl number."
            ::= { fsNatSettingEntry 6 }
            
        fsNatSettingaclname OBJECT-TYPE
            SYNTAX  DisplayString(SIZE (1..255))
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting acl name."
            ::= { fsNatSettingEntry 7 }
        
        fsNatSettingstaticrule OBJECT-TYPE
            SYNTAX Integer32(0..1)
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static rule flag."
            ::= { fsNatSettingEntry 8 }
            
        fsNatSettingproto OBJECT-TYPE
            SYNTAX FSNatTcpUdpType
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static protocal."
            ::= { fsNatSettingEntry 9 }
            
				fsNatSettinginlocalip OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static Inside local IP address."
            ::= { fsNatSettingEntry 10 }
            
        fsNatSettinginglobalip OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static Inside global IP address."
            ::= { fsNatSettingEntry 11 }
            
         fsNatSettingnetmask OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static netmask."
            ::= { fsNatSettingEntry 12 }
        
        fsNatSettinglocalport OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static local port."
            ::= { fsNatSettingEntry 13 }
            
        fsNatSettingglobalport OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static global port."
            ::= { fsNatSettingEntry 14 }
        
        fsNatSettingmatchinterface OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting static match interface."
            ::= { fsNatSettingEntry 15 }
        
        fsNatSettingpermisinside OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting permis-inside."
            ::= { fsNatSettingEntry 16 }
        
        fsNatSettinginterface OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting interface."
            ::= { fsNatSettingEntry 17 }
        
        fsNatSettingpool OBJECT-TYPE
            SYNTAX DisplayString(SIZE (1..255))
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting pool name."
            ::= { fsNatSettingEntry 18 } 
            
        fsNatSettingdstchange OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting change to dst ip."
            ::= { fsNatSettingEntry 19 }
            
        fsNatSettingsrcchange OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat setting change to src ip."
            ::= { fsNatSettingEntry 20 }
        
--end NatSetting objects

--start NatPoolAddress objects
				fsNatPoolAddressTable OBJECT-TYPE  
            SYNTAX SEQUENCE OF FSNatPoolAddressEntry
            MAX-ACCESS            not-accessible
            STATUS                current
            DESCRIPTION
                "nat configure address pool address"
            ::= { fsNatPoolAddressObjects 1 }
                
        fsNatPoolAddressEntry OBJECT-TYPE
            SYNTAX FSNatPoolAddressEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "nat configure address pool address entry."
            INDEX { fsNatPoolAddressIndex }
            ::= { fsNatPoolAddressTable 1 } 
        
        FSNatPoolAddressEntry::=
            SEQUENCE { 
            	  fsNatPoolAddressIndex
            		Integer32,
            		fsNatPoolAddressisno
            		Integer32,
            		fsNatPoolAddressname
            		DisplayString,
            		fsNatPoolAddressntmskprefix
            		FSNatPoolAddressntmskprefixFlag,
            		fsNatPoolAddressnetmask
            		IpAddress,
            		fsNatPoolAddressprefixlength
            		Integer32,
            		fsNatPoolAddressstartip
            		IpAddress,
            		fsNatPoolAddressendip
            		IpAddress,
            		fsNatPoolAddressstartinterface
            		Integer32,
            		fsNatPoolAddressendinterface
            		Integer32,
            		fsNatPoolAddresstype
            		Integer32
            	--rotary	
             }    

					fsNatPoolAddressIndex OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-only
            STATUS current
            DESCRIPTION
                "nat pool index."
            ::= { fsNatPoolAddressEntry 1 }
            
          fsNatPoolAddressisno OBJECT-TYPE
            SYNTAX Integer32(0..1)
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool Address del rule."
            ::= { fsNatPoolAddressEntry 2 }
          
          fsNatPoolAddressname OBJECT-TYPE
            SYNTAX DisplayString(SIZE (1..255))
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool name."
            ::= { fsNatPoolAddressEntry 3 }
          
         fsNatPoolAddressntmskprefix OBJECT-TYPE
         		SYNTAX FSNatPoolAddressntmskprefixFlag
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool prefix flag .( netmask or prefix)."
            ::= { fsNatPoolAddressEntry 4 }
         
         fsNatPoolAddressnetmask OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool netmask."
            ::= { fsNatPoolAddressEntry 5 }
            
         fsNatPoolAddressprefixlength OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool prefix length."
            ::= { fsNatPoolAddressEntry 6 }    
          
          fsNatPoolAddressstartip OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool start ip."
            ::= { fsNatPoolAddressEntry 7 }
            
          fsNatPoolAddressendip OBJECT-TYPE
            SYNTAX IpAddress
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool end ip."
            ::= { fsNatPoolAddressEntry 8 }
          
          fsNatPoolAddressstartinterface OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool address start interface."
            ::= { fsNatPoolAddressEntry 9 }
            
          fsNatPoolAddressendinterface OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool address end interface."
            ::= { fsNatPoolAddressEntry 10 }
            
          fsNatPoolAddresstype OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat pool type."
            ::= { fsNatPoolAddressEntry 11 }
          
          
            
--end NatPoolAddress objects


--start NatInterface objects
				fsNatInterfaceTable OBJECT-TYPE  
            SYNTAX SEQUENCE OF FSNatInterfaceEntry
            MAX-ACCESS            not-accessible
            STATUS                current
            DESCRIPTION
                "nat interface configure"
            ::= { fsNatInterfaceObjects 1 }
                
        fsNatInterfaceEntry OBJECT-TYPE
            SYNTAX FSNatInterfaceEntry
            MAX-ACCESS not-accessible
            STATUS current
            DESCRIPTION
                "nat interface configure entry."
            INDEX { fsNatInterfaceIndex }
            ::= { fsNatInterfaceTable 1 } 
        
        FSNatInterfaceEntry::=
            SEQUENCE { 
            	  fsNatInterfaceIndex
            		Integer32,
            		fsNatInterfaceisno
            		Integer32,
            		fsNatInterfacedirector
            		Integer32
             }    

					fsNatInterfaceIndex OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-only
            STATUS current
            DESCRIPTION
                "nat interface index."
            ::= { fsNatInterfaceEntry 1 }
            
          fsNatInterfaceisno OBJECT-TYPE
            SYNTAX Integer32(0..1)
            MAX-ACCESS read-only
            STATUS current
            DESCRIPTION
                "nat interface del rule."
            ::= { fsNatInterfaceEntry 2 }
            
          fsNatInterfacedirector OBJECT-TYPE
            SYNTAX Integer32
            MAX-ACCESS read-write
            STATUS current
            DESCRIPTION
                "nat set interface director."
            ::= { fsNatInterfaceEntry 3 }
            
             
--end NatInterface objects     

-- End Nat associate objects         
END
-- End module

