function formatVLANPackDiff($old, $current) { $ret = ''; $new_pack = serializeVLANPack($current); $new_size = substr_count($new_pack, ','); if (!same8021QConfigs($old, $current)) { $old_pack = serializeVLANPack($old); $old_size = substr_count($old_pack, ','); $ret .= '<s>' . $old_pack . '</s><br>'; // make diff $added = groupIntsToRanges(array_diff($current['allowed'], $old['allowed'])); $removed = groupIntsToRanges(array_diff($old['allowed'], $current['allowed'])); if ($old['mode'] == $current['mode'] && $current['mode'] == 'trunk') { if (!empty($added)) { $ret .= '<span class="vlan-diff diff-add">+ ' . implode(', ', $added) . '</span><br>'; } if (!empty($removed)) { $ret .= '<span class="vlan-diff diff-rem">- ' . implode(', ', $removed) . '</span><br>'; } } } $ret .= $new_pack; return $ret; }
function queueChangesToSwitch($switch_id, $order, $before, $check_only = FALSE) { global $script_mode; $ret = array(); $nsaved = 0; foreach ($order as $portname => $portorder) { if (!same8021QConfigs($portorder, $before[$portname])) { if ($script_mode) { $object = spotEntity('object', $switch_id); print $object['name'] . " {$portname}: " . serializeVLANPack($before[$portname]) . ' -> ' . serializeVLANPack($portorder) . "\n"; } if (!$check_only) { upd8021QPort('desired', $switch_id, $portname, $portorder); $nsaved++; } } } if (!$check_only && $nsaved) { touchVLANSwitch($switch_id); } return $nsaved; }