ciscoconfparse.models_cisco.IOSIntfLine Object

class ciscoconfparse.models_cisco.IOSIntfLine(*args, **kwargs)

Accept an IOS line number and initialize family relationship attributes

Warning

All IOSIntfLine methods are still considered beta-quality, until this notice is removed. The behavior of APIs on this object could change at any time.

__eq__(val)

Return self==value.

__gt__(val)

Return self>value.

__hash__()

Return hash(self).

__lt__(val)

Return self<value.

__repr__()

Return repr(self).

__str__()

Return str(self).

property abbvs

A python set of valid abbreviations (lowercased) for the interface

property access_vlan

Return an integer with the access vlan number. Return 1, if the switchport has no explicit vlan configured; return 0 if the port isn’t a switchport

calculate_line_id()

Calculate and return an integer line_id for BaseCfgLine()

line_id is used to build a numerical identity for a given BaseCfgLine().

Do NOT cache this value. It must be recalculated when self._text changes.

property description

Return the current interface description string.

property diff_id_list

Return a list of integers as a context-sensitive diff identifier.

The returned value includes line_id of all parents. The oldest ancestor / parent line_id is last in the returned list of line_id hash values.

object id integers are NOT the same between script runs.

property geneology

Iterate through to the oldest ancestor of this object, and return a list of all ancestors’ objects in the direct line as well as this obj. Cousins or aunts / uncles are not returned. Note: children of this object are not returned.

property geneology_text

Iterate through to the oldest ancestor of this object, and return a list of all ancestors’ .text field for all ancestors in the direct line as well as this obj. Cousins or aunts / uncles are not returned. Note: children of this object are not returned.

property has_ip_helper_addresses

Return a True if the intf has helper-addresses; False if not

property has_manual_carrierdelay

Return a python boolean for whether carrier delay is manually configured on the interface

property has_no_ip_proxyarp

Return a boolean for whether no ip proxy-arp is configured on the interface.

Return type

bool

Examples

This example illustrates use of the method.

>>> from ciscoconfparse.ccp_util import IPv4Obj
>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     ' no ip proxy-arp',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.has_no_ip_proxyarp
True
>>>
property hash_children

Return a unique hash of all children (if the number of children > 0)

in_ipv4_subnet(ipv4network=<IPv4Obj 0.0.0.0/32>)

Accept an argument for the IPv4Obj to be considered, and return a boolean for whether this interface is within the requested IPv4Obj.

Parameters

ipv4network (IPv4Obj) – An object to compare against IP addresses configured on this IOSIntfLine object.

Returns

If there is an ip address, or None if there is no ip address.

Return type

bool

Examples

This example illustrates use of the method.

>>> from ciscoconfparse.ccp_util import IPv4Obj
>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sSerial')[0]
>>> obj
<IOSIntfLine # 1 'Serial1/0' info: '1.1.1.1/30'>
>>> obj.in_ipv4_subnet(IPv4Obj('1.1.1.0/24', strict=False))
True
>>> obj.in_ipv4_subnet(IPv4Obj('2.1.1.0/24', strict=False))
False
>>>
in_ipv4_subnets(subnets=None)

Accept a set or list of ccp_util.IPv4Obj objects, and return a boolean for whether this interface is within the requested subnets.

property index

Alias index to linenum

property interface_number

‘2/25’. If you call interface_number on GigabitEthernet2/0/25.100 you’ll get this python string ‘2/0/25’. This method strips all subinterface information in the returned value.

Return type

str

Warning

interface_number should silently fail (returning an empty python string) if the interface doesn’t parse correctly

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.interface_number
'1/0'
>>> obj = parse.find_objects('^interface\sATM')[-1]
>>> obj.interface_number
'2/0'
>>>
Type

Return a string representing the card, slot, port for this interface. If you call interface_number on GigabitEthernet2/25.100, you’ll get this python string

property intf_in_portchannel

Return a boolean indicating whether this port is configured in a port-channel

Return type

bool

property ioscfg

Return a list with this the text of this object, and with all children in the direct line.

property ip_helper_addresses

Return a list of dicts with IP helper-addresses. Each helper-address is in a dictionary. The dictionary is in this format:

Examples

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/1',
...     ' ip address 1.1.1.1 255.255.255.0',
...     ' ip helper-address 172.16.20.12',
...     ' ip helper-address 172.19.185.91',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>> obj = parse.find_objects('^interface\sFastEthernet1/1$')[0]
>>> obj.ip_helper_addresses
[{'addr': '172.16.20.12', 'vrf': '', 'global': False}, {'addr': '172.19.185.91', 'vrf': '', 'global': False}]
>>>
property ipv4_addr

Return a string with the interface’s IPv4 address, or ‘’ if there is none

property ipv4_addr_object

Return a ccp_util.IPv4Obj object representing the address on this interface; if there is no address, return IPv4Obj(‘127.0.0.1/32’)

property ipv4_masklength

Return an integer with the interface’s IPv4 mask length, or 0 if there is no IP address on the interace

property ipv4_netmask

Return a string with the interface’s IPv4 netmask, or ‘’ if there is none

property ipv4_network_object

Return an ccp_util.IPv4Obj object representing the subnet on this interface; if there is no address, return ccp_util.IPv4Obj(‘127.0.0.1/32’)

is_abbreviated_as(val)

Test whether val is a good abbreviation for the interface

property is_config_line

Return a boolean for whether this is a config statement; returns False if this object is a blank line, or a comment.

property is_ethernet_intf

Returns a boolean (True or False) to answer whether this IOSCfgLine is an ethernet interface. Any ethernet interface (10M through 10G) is considered an ethernet interface.

Return type

bool

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.is_ethernet_intf
True
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.is_ethernet_intf
False
>>>
property is_intf

Returns a boolean (True or False) to answer whether this IOSCfgLine is an interface; subinterfaces also return True.

Return type

bool

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>> obj = parse.find_objects('^interface\sSerial')[0]
>>> obj.is_intf
True
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.is_intf
True
>>>
property is_loopback_intf

Returns a boolean (True or False) to answer whether this IOSCfgLine is a loopback interface.

Return type

bool

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface Loopback0',
...     ' ip address 1.1.1.5 255.255.255.255',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>> obj = parse.find_objects(r'^interface\sFast')[0]
>>> obj.is_loopback_intf
False
>>> obj = parse.find_objects(r'^interface\sLoop')[0]
>>> obj.is_loopback_intf
True
>>>
property is_portchannel_intf

Return a boolean indicating whether this port is a port-channel intf

Return type

bool

property is_subintf

Returns a boolean (True or False) to answer whether this IOSCfgLine is a subinterface.

Return type

bool

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>> obj = parse.find_objects(r'^interface\sSerial')[0]
>>> obj.is_subintf
False
>>> obj = parse.find_objects(r'^interface\sATM')[0]
>>> obj.is_subintf
True
>>>
property lineage

Iterate through to the oldest ancestor of this object, and return a list of all ancestors / children in the direct line. Cousins or aunts / uncles are not returned. Note: all children of this object are returned.

property manual_arp_timeout

Return an integer with the current interface ARP timeout, if there isn’t one set, return 0. If there is no IP address, return -1

property manual_carrierdelay

Return the manual carrier delay (in seconds) of the interface as a python float. If there is no explicit carrier delay, return 0.0

property manual_clock_rate

Return the clock rate of the interface as a python integer. If there is no explicit clock rate, return 0

property manual_holdqueue_in

Return the current hold-queue in depth, if default return 0

property manual_holdqueue_out

Return the current hold-queue out depth, if default return 0

property manual_mtu

Returns a integer value for the manual MTU configured on an IOSIntfLine object. Interfaces without a manual MTU configuration return 0.

Return type

int

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' mtu 4470',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.manual_mtu
0
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.manual_mtu
4470
>>>
property name

Return the interface name as a string, such as ‘GigabitEthernet0/1’

Returns

The interface name as a string, or ‘’ if the object is not an interface.

Return type

str

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.name
'FastEthernet1/0'
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.name
'ATM2/0'
>>> obj = parse.find_objects('^interface\sATM')[1]
>>> obj.name
'ATM2/0.100'
>>>
property native_vlan

Return an integer with the native vlan number. Return 1, if the switchport has no explicit native vlan configured; return 0 if the port isn’t a switchport

property ordinal_list

(2, 0, 25). This method strips all subinterface information in the returned value.

Returns

A tuple of port numbers as integers.

Return type

tuple

Warning

ordinal_list should silently fail (returning an empty python list) if the interface doesn’t parse correctly

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.ordinal_list
(1, 0)
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.ordinal_list
(2, 0)
>>>
Type

Return a tuple of numbers representing card, slot, port for this interface. If you call ordinal_list on GigabitEthernet2/25.100, you’ll get this python tuple of integers

Type

(2, 25). If you call ordinal_list on GigabitEthernet2/0/25.100 you’ll get this python list of integers

property port

Return the interface’s port number

Returns

The interface number.

Return type

int

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.port
0
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.port
0
>>>
property port_type

Return Loopback, ATM, GigabitEthernet, Virtual-Template, etc…

Returns

The port type.

Return type

str

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.port_type
'FastEthernet'
>>> obj = parse.find_objects('^interface\sATM')[0]
>>> obj.port_type
'ATM'
>>>
property portchannel_number

Return an integer for the port-channel which it’s configured in. Return -1 if it’s not configured in a port-channel

Return type

bool

re_match(regex, group=1, default='')

Use regex to search the IOSCfgLine text and return the regular expression group, at the integer index. :param regex: A string or python regular expression, which should be matched. This regular expression should contain parenthesis, which bound a match group. :type regex: str :param group: An integer which specifies the desired regex group to be returned. group defaults to 1. :type group: int :param default: The default value to be returned, if there is no match. By default an empty string is returned if there is no match. :type default: str

Returns

The text matched by the regular expression group; if there is no match, default is returned.

Return type

str

Examples

This example illustrates how you can use re_match() to store the mask of the interface which owns “1.1.1.5” in a variable called netmask. .. code-block:: python

emphasize-lines

14

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface Serial1/1',
...     ' ip address 1.1.1.5 255.255.255.252',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>>
>>> for obj in parse.find_objects(r'ip\saddress'):
...     netmask = obj.re_match(r'1\.1\.1\.5\s(\S+)')
>>>
>>> print("The netmask is", netmask)
The netmask is 255.255.255.252
>>>
re_match_iter_typed(regex, group=1, result_type=<class 'str'>, default='', untyped_default=False, recurse=False)

Use regex to search the children of IOSCfgLine text and return the contents of the regular expression group, at the integer group index, cast as result_type; if there is no match, default is returned. :param regex: A string or python compiled regular expression, which should be matched. This regular expression should contain parenthesis, which bound a match group. :type regex: str :param group: An integer which specifies the desired regex group to be returned. group defaults to 1. :type group: int :param result_type: A type (typically one of: str, int, float, or IPv4Obj). All returned values are cast as result_type, which defaults to str. :type result_type: type :param default: The default value to be returned, if there is no match. :type default: any :param recurse: Set True if you want to search all children (children, grand children, great grand children, etc…) :type recurse: bool :param untyped_default: Set True if you don’t want the default value to be typed :type untyped_default: bool

Returns

The text matched by the regular expression group; if there is no match, default is returned. All values are cast as result_type, unless untyped_default is True.

Return type

result_type

Notes

This loops through the children (in order) and returns when the regex hits its first match.

Examples

This example illustrates how you can use re_match_iter_typed() to build an IPv4Obj() address object for each interface.

>>> import re
>>> from ciscoconfparse import CiscoConfParse
>>> from ciscoconfparse.ccp_util import IPv4Obj
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface Serial2/0',
...     ' ip address 1.1.1.5 255.255.255.252',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>> INTF_RE = re.compile(r'interface\s\S+')
>>> ADDR_RE = re.compile(r'ip\saddress\s(\S+\s+\S+)')
>>> for obj in parse.find_objects(INTF_RE):
...     print("{} {}".format(obj.text, obj.re_match_iter_typed(ADDR_RE, result_type=IPv4Obj)))
interface Serial1/0 <IPv4Obj 1.1.1.1/30>
interface Serial2/0 <IPv4Obj 1.1.1.5/30>
>>>
re_match_typed(regex, group=1, untyped_default=False, result_type=<class 'str'>, default='')

Use regex to search the IOSCfgLine text and return the contents of the regular expression group, at the integer group index, cast as result_type; if there is no match, default is returned. :param regex: A string or python regular expression, which should be matched. This regular expression should contain parenthesis, which bound a match group. :type regex: str :param group: An integer which specifies the desired regex group to be returned. group defaults to 1. :type group: int :param result_type: A type (typically one of: str, int, float, or IPv4Obj). All returned values are cast as result_type, which defaults to str. :type result_type: type :param default: The default value to be returned, if there is no match. :type default: any :param untyped_default: Set True if you don’t want the default value to be typed :type untyped_default: bool

Returns

The text matched by the regular expression group; if there is no match, default is returned. All values are cast as result_type, unless untyped_default is True.

Return type

result_type

Examples

This example illustrates how you can use re_match_typed() to build an association between an interface name, and its numerical slot value. The name will be cast as str(), and the slot will be cast as int(). .. code-block:: python

emphasize-lines

15,16,17,18,19

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface Serial2/0',
...     ' ip address 1.1.1.5 255.255.255.252',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>>
>>> slots = dict()
>>> for obj in parse.find_objects(r'^interface'):
...     name = obj.re_match_typed(regex=r'^interface\s(\S+)',
...         default='UNKNOWN')
...     slot = obj.re_match_typed(regex=r'Serial(\d+)',
...         result_type=int,
...         default=-1)
...     print("Interface {0} is in slot {1}".format(name, slot))
...
Interface Serial1/0 is in slot 1
Interface Serial2/0 is in slot 2
>>>

Search IOSCfgLine with regex

Parameters
  • regex (str) – A string or python regular expression, which should be matched.

  • default (str) – A value which is returned if re_search() doesn’t find a match while looking for regex.

Returns

The IOSCfgLine text which matched. If there is no match, default is returned.

Return type

str

re_search_children(regex, recurse=False)

Use regex to search the text contained in the children of this IOSCfgLine. :param regex: A string or python regular expression, which should be matched. :type regex: str :param recurse: Set True if you want to search all children (children, grand children, great grand children, etc…) :type recurse: bool

Returns

A list of matching IOSCfgLine objects which matched. If there is no match, an empty list() is returned.

Return type

list

re_sub(regex, replacergx, ignore_rgx=None)

Replace all strings matching linespec with replacestr in the IOSCfgLine object; however, if the IOSCfgLine text matches ignore_rgx, then the text is not replaced. :param regex: A string or python regular expression, which should be matched. :type regex: str :param replacergx: A string or python regular expression, which should replace the text matched by regex. :type replacergx: str :param ignore_rgx: A string or python regular expression; the replacement is skipped if IOSCfgLine text matches ignore_rgx. ignore_rgx defaults to None, which means no lines matching regex are skipped. :type ignore_rgx: str

Returns

The new text after replacement

Return type

str

Examples

This example illustrates how you can use re_sub() to replace Serial1 with Serial0 in a configuration… .. code-block:: python

emphasize-lines

15

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface Serial1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface Serial1/1',
...     ' ip address 1.1.1.5 255.255.255.252',
...     '!',
...     ]
>>> parse = CiscoConfParse(config)
>>>
>>> for obj in parse.find_objects('Serial'):
...     print("OLD {}".format(obj.text))
...     obj.re_sub(r'Serial1', r'Serial0')
...     print("  NEW {}".format(obj.text))
OLD interface Serial1/0
  NEW interface Serial0/0
OLD interface Serial1/1
  NEW interface Serial0/1
>>>
safe_escape_curly_braces(text)

Escape curly braces in strings since they could be misunderstood as f-string or string.format() delimiters…

If BaseCfgLine receives line with curly-braces, this method can escape the curly braces so they are not mis-interpreted as python string formatting delimiters.

property subinterface_number

‘2/25.100’. If you call interface_number on GigabitEthernet2/0/25 you’ll get this python string ‘2/0/25’. This method strips all subinterface information in the returned value.

Return type

str

Warning

subinterface_number should silently fail (returning an empty python string) if the interface doesn’t parse correctly

Examples

This example illustrates use of the method.

>>> from ciscoconfparse import CiscoConfParse
>>> config = [
...     '!',
...     'interface FastEthernet1/0',
...     ' ip address 1.1.1.1 255.255.255.252',
...     '!',
...     'interface ATM2/0',
...     ' no ip address',
...     '!',
...     'interface ATM2/0.100 point-to-point',
...     ' ip address 1.1.1.5 255.255.255.252',
...     ' pvc 0/100',
...     '  vbr-nrt 704 704',
...     '!',
...     ]
>>> parse = CiscoConfParse(config, factory=True)
>>> obj = parse.find_objects('^interface\sFast')[0]
>>> obj.subinterface_number
'1/0'
>>> obj = parse.find_objects('^interface\sATM')[-1]
>>> obj.subinterface_number
'2/0.100'
>>>
Type

Return a string representing the card, slot, port for this interface or subinterface. If you call subinterface_number on GigabitEthernet2/25.100, you’ll get this python string

property trunk_vlans_allowed

Return a CiscoRange() with the list of allowed vlan numbers (as int). Return 0 if the port isn’t a switchport in trunk mode

property uncfgtext

Return a ‘best-effort’ Cisco IOS-style config to remove this configuration object.

This uncfgtext string should not be considered correct in all Cisco IOS command unconfigure cases.