1# This file is part of Ansible
2#
3# Ansible is free software: you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation, either version 3 of the License, or
6# (at your option) any later version.
7#
8# Ansible is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
15
16from __future__ import (absolute_import, division, print_function)
17__metaclass__ = type
18
19from ansible.module_utils.facts.network.base import NetworkCollector
20from ansible.module_utils.facts.network.generic_bsd import GenericBsdIfconfigNetwork
21
22
23class NetBSDNetwork(GenericBsdIfconfigNetwork):
24    """
25    This is the NetBSD Network Class.
26    It uses the GenericBsdIfconfigNetwork
27    """
28    platform = 'NetBSD'
29
30    def parse_media_line(self, words, current_if, ips):
31        # example of line:
32        # $ ifconfig
33        # ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
34        #    ec_capabilities=1<VLAN_MTU>
35        #    ec_enabled=0
36        #    address: 00:20:91:45:00:78
37        #    media: Ethernet 10baseT full-duplex
38        #    inet 192.168.156.29 netmask 0xffffff00 broadcast 192.168.156.255
39        current_if['media'] = words[1]
40        if len(words) > 2:
41            current_if['media_type'] = words[2]
42        if len(words) > 3:
43            current_if['media_options'] = words[3].split(',')
44
45
46class NetBSDNetworkCollector(NetworkCollector):
47    _fact_class = NetBSDNetwork
48    _platform = 'NetBSD'
49