Device-Network-ConfigParser

 view release on metacpan or  search on metacpan

lib/Device/Network/ConfigParser/Linux/NetUtils.pm  view on Meta::CPAN


sub get_parser {
    return new Parse::RecDescent(q{
        <autoaction: { [@item] }>
        startrule: config_line(s) { $item[1] }
        config_line:
            ifconfig(s) { { ifconfig => $item{'ifconfig(s)'} } } |
            not_parsed { $item[1] }

            ifconfig: 
                interface encap hw_addr(?) inet(?) inet6(s?) flag(s) mtu if_metric rx_stats tx_stats rx_bytes tx_bytes {
                    {
                        interface => $item{interface},
                        encapsulation => $item{encap},
                        hw_addr => $item{'hw_addr(?)'},
                        inet => $item{'inet(?)'},
                        inet6 => $item{'inet6(s?)'},
                        flags => $item{'flag(s)'},
                        mtu => $item{mtu},
                        metric => $item{if_metric},
                        rx_stats => $item{rx_stats},
                        tx_stats => $item{tx_stats},
                        rx_bytes => $item{rx_bytes},
                        tx_bytes => $item{tx_bytes},
                    }
                }

lib/Device/Network/ConfigParser/Linux/NetUtils.pm  view on Meta::CPAN

                        {
                            address => $item{inet_addr},
                            mask => $item{inet_mask},
                            broadcast => $item{'inet_bcast(?)'}
                        }
                    }

                inet_addr: 'inet addr:' ipv4 { $item{ipv4} }
                inet_bcast: 'Bcast:' ipv4 { $item{ipv4} }
                inet_mask: 'Mask:' netmask { $item{netmask} }
                inet6: inet6_addr inet6_mask inet6_scope {
                    {
                        address => $item{inet6_addr},
                        mask => $item{inet6_mask},
                        scope => $item{inet6_scope}
                    }
                }
                    inet6_addr: 'inet6 addr:' ipv6 { $item{ipv6} }
                    inet6_mask: '/' m{\d{1,3}} { $item{__PATTERN1__} }
                    inet6_scope: 'Scope:' m{\w+} { $item{__PATTERN1__} }

                flag: m{UP|BROADCAST|RUNNING|MULTICAST|LOOPBACK} { $item{__PATTERN1__} }
                mtu: 'MTU:' m{\d+} { $item{__PATTERN1__} }
                if_metric: 'Metric:' m{\d+} { $item{__PATTERN1__} }
                rx_stats: 'RX packets:' m{\d+} 'errors:' m{\d+} 'dropped:' m{\d+} 'overruns:' m{\d+} 'frame:' m{\d+} {
                    {
                        packets => $item{__PATTERN1__},
                        errors => $item{__PATTERN2__},
                        dropped => $item{__PATTERN3__},
                        overruns => $item{__PATTERN4__},



( run in 0.326 second using v1.01-cache-2.11-cpan-87723dcf8b7 )