示例#1
0
function buildVLANFilter($role, $string)
{
    // set base
    switch ($role) {
        case 'access':
            // 1-4094
            $min = VLAN_MIN_ID;
            $max = VLAN_MAX_ID;
            break;
        case 'trunk':
            // 2-4094
        // 2-4094
        case 'uplink':
        case 'downlink':
        case 'anymode':
            $min = VLAN_MIN_ID + 1;
            $max = VLAN_MAX_ID;
            break;
        default:
            // none
            return array();
    }
    if ($string == '') {
        // fast track
        return array(array('from' => $min, 'to' => $max));
    }
    // transform
    $vlanidlist = array();
    foreach (iosParseVLANString($string) as $vlan_id) {
        if ($min <= $vlan_id and $vlan_id <= $max) {
            $vlanidlist[] = $vlan_id;
        }
    }
    return listToRanges($vlanidlist);
}
function ros11Read8021QVLANDatabase(&$work, $line)
{
    if (1 != preg_match('/^vlan ([-,0-9]+)$/', $line, $m)) {
        return 'ros11-get8021q-scantop';
    }
    $work['vlanlist'] = array_merge($work['vlanlist'], iosParseVLANString($m[1]));
    return 'ros11-get8021q-vlandb';
}