pvl/snmp/lldp.py
author Tero Marttila <terom@paivola.fi>
Mon, 09 Mar 2015 23:31:13 +0200
changeset 738 3104fdf7ea26
parent 394 7077379fb5a0
permissions -rw-r--r--
pvl.hosts.hosts: drop support for instanced ip.* in favor of improved interface:ip.* =
389
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
"""
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
    Requirements:
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
        memoized-property
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
    Setup:
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
        ./opt/bin/build-pysnmp-mib -o usr/mibs/LLDP-MIB.py etc/mibs/LLDP-MIB
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
    Run:
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
        PYSNMP_MIB_DIRS=usr/mibs/ ./opt/bin/python ...
394
7077379fb5a0 pvl.snmp.lldp: docdoc used MIBS
Tero Marttila <terom@paivola.fi>
parents: 389
diff changeset
    10
    
7077379fb5a0 pvl.snmp.lldp: docdoc used MIBS
Tero Marttila <terom@paivola.fi>
parents: 389
diff changeset
    11
    SNMP:
7077379fb5a0 pvl.snmp.lldp: docdoc used MIBS
Tero Marttila <terom@paivola.fi>
parents: 389
diff changeset
    12
        LLDP-MIB::lldpLocalSystemData
7077379fb5a0 pvl.snmp.lldp: docdoc used MIBS
Tero Marttila <terom@paivola.fi>
parents: 389
diff changeset
    13
        LLDP-MIB::lldpRemTable
389
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
"""
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
from pvl.snmp import snmp
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
from pvl.snmp.snmp import pysnmp
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
from memoized_property import memoized_property
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
import logging; log = logging.getLogger('pvl.snmp.lldp')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
def macaddr (value) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
        Excepts a MAC address from an SNMP OctetString.
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
    """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
    return ':'.join('{octet:02x}'.format(octet=c) for c in value.asNumbers())
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
class LLDPAgent (snmp.SNMPAgent) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
    """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
        Query LLDP info from a remote agent.
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
    """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
    @classmethod
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
    def _chassis_id (cls, chassis_id, subtype) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
        log.debug("%s: %r", subtype, chassis_id)
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
        
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
        # XXX: reference names from LLDP-MIB.py
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
        if subtype == 4:
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
            return macaddr(chassis_id)
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
        else :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
            return chassis_id
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
 
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
    @classmethod
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
    def _port_id (cls, port_id, subtype, desc) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
        log.debug("%s: %r (%s)", subtype, port_id, desc)
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
        
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
        # XXX: reference names from LLDP-MIB.py
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
        if subtype == 5: # interfaceName -> IF-MIB::ifName ?
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
            return str(port_id)
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
        elif subtype == 3 : # macAddress
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
            if desc :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
                # prefer desc in this case
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
                return desc
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
            else :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
                return macaddr(port_id)
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
        elif subtype == 7 : # local
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
            return str(port_id) # XXX: integer?
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
        else :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
            log.warn("unknown subtype=%d: %r", subtype, port_id)
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
            return port_id
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
       
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
    LLDP_LOC_CHASSIS_ID = pysnmp.MibVariable('LLDP-MIB', 'lldpLocChassisId')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
    LLDP_LOC_CHASSIS_ID_SUBTYPE = pysnmp.MibVariable('LLDP-MIB', 'lldpLocChassisIdSubtype')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
    LLDP_LOC_SYS_NAME = pysnmp.MibVariable('LLDP-MIB', 'lldpLocSysName')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
    @memoized_property
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
    def local (self) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
        """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
            Describe the local system.
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
        """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
        for idx, data in self.table(
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
                self.LLDP_LOC_CHASSIS_ID,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
                self.LLDP_LOC_CHASSIS_ID_SUBTYPE,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
                self.LLDP_LOC_SYS_NAME,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
        ) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
            return {
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
                    'chassis':  self._chassis_id(data[self.LLDP_LOC_CHASSIS_ID], data[self.LLDP_LOC_CHASSIS_ID_SUBTYPE]),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
                    'sys_name': str(data[self.LLDP_LOC_SYS_NAME]),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
            }
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
    LLDP_LOC_PORT_DESC = pysnmp.MibVariable('LLDP-MIB', 'lldpLocPortDesc')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
    LLDP_LOC_PORT_ID = pysnmp.MibVariable('LLDP-MIB', 'lldpLocPortId')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
    LLDP_LOC_PORT_ID_SUBTYPE = pysnmp.MibVariable('LLDP-MIB', 'lldpLocPortIdSubtype')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
    @memoized_property
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    90
    def ports (self) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    91
        """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    92
            Describe the local ports.
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    93
        """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    94
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    95
        ports = { }
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
        for idx, data in self.table(
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    98
                self.LLDP_LOC_PORT_DESC,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
                self.LLDP_LOC_PORT_ID,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
                self.LLDP_LOC_PORT_ID_SUBTYPE,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   101
        ) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   102
            port, = idx
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
            
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   104
            ports[int(port)] = {
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   105
                    'port_id': int(port),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   106
                    'port': self._port_id(data[self.LLDP_LOC_PORT_ID], data[self.LLDP_LOC_PORT_ID_SUBTYPE], data[self.LLDP_LOC_PORT_DESC]),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107
            }
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   108
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   109
        return ports
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   110
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   111
    def port (self, port) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
        return self.ports[int(port)]
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   113
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   114
    LLDP_REM_CHASSIS_ID = pysnmp.MibVariable('LLDP-MIB', 'lldpRemChassisId')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   115
    LLDP_REM_CHASSIS_ID_SUBTYPE = pysnmp.MibVariable('LLDP-MIB', 'lldpRemChassisIdSubtype')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   116
    LLDP_REM_SYS_NAME = pysnmp.MibVariable('LLDP-MIB', 'lldpRemSysName')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   117
    LLDP_REM_PORT_ID = pysnmp.MibVariable('LLDP-MIB', 'lldpRemPortId')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   118
    LLDP_REM_PORT_ID_SUBTYPE = pysnmp.MibVariable('LLDP-MIB', 'lldpRemPortIdSubtype')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   119
    LLDP_REM_PORT_DESC = pysnmp.MibVariable('LLDP-MIB', 'lldpRemPortDesc')
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   120
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   121
    def remotes (self) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   122
        """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   123
            Describe remote systems, indexed by local port.
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   124
        """
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   125
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   126
        for idx, data in self.table(
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   127
                self.LLDP_REM_CHASSIS_ID,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   128
                self.LLDP_REM_CHASSIS_ID_SUBTYPE,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   129
                self.LLDP_REM_SYS_NAME,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   130
                self.LLDP_REM_PORT_ID,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   131
                self.LLDP_REM_PORT_ID_SUBTYPE,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   132
                self.LLDP_REM_PORT_DESC,
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   133
        ) :
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   134
            time, port, idx = idx
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   135
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   136
            yield int(port), {
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   137
                'chassis':  self._chassis_id(data[self.LLDP_REM_CHASSIS_ID], data[self.LLDP_REM_CHASSIS_ID_SUBTYPE]),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   138
                'sys_name': str(data[self.LLDP_REM_SYS_NAME]),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   139
                'port':     self._port_id(data[self.LLDP_REM_PORT_ID], data[self.LLDP_REM_PORT_ID_SUBTYPE], data[self.LLDP_REM_PORT_DESC]),
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   140
            }
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   141
93e3b199cbe6 add missing pvl.snmp.* files
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   142