⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getvlanfrominterface.java

📁 Network Administration Visualized 网络管理可视化源码
💻 JAVA
字号:
package no.ntnu.nav.getDeviceData.deviceplugins.GetVlanFromInterface;import java.util.*;import java.util.regex.*;import java.sql.ResultSet;import java.sql.SQLException;import no.ntnu.nav.logger.*;import no.ntnu.nav.util.*;import no.ntnu.nav.SimpleSnmp.*;import no.ntnu.nav.ConfigParser.*;import no.ntnu.nav.Database.*;import no.ntnu.nav.getDeviceData.Netbox;import no.ntnu.nav.getDeviceData.deviceplugins.*;import no.ntnu.nav.getDeviceData.dataplugins.*;import no.ntnu.nav.getDeviceData.dataplugins.Module.*;import no.ntnu.nav.getDeviceData.dataplugins.Swport.*;/** * <p> * Device plugin for extracting VLAN info from the interface name * </p> * * <p> * This plugin handles the following OID keys: * </p> * * <ul> *	<li>From MIB-II</li> *	<ul> *	 <li>ifDescr</li> *	</ul> * </ul> * </p> * */public class GetVlanFromInterface implements DeviceHandler{	private static String[] canHandleOids = {			"ifDescr", 	};	private SimpleSnmp sSnmp;	public int canHandleDevice(Netbox nb) {		int v = nb.isSupportedOids(canHandleOids) ? ALWAYS_HANDLE : NEVER_HANDLE;		Log.d("VLAN_INTERFACE_CANHANDLE", "CHECK_CAN_HANDLE", "Can handle device: " + v);		return v;	}	public void handleDevice(Netbox nb, SimpleSnmp sSnmp, ConfigParser cp, DataContainers containers) throws TimeoutException	{		Log.setDefaultSubsystem("VLAN_INTERFACE_DEVHANDLER");		SwportContainer sc;		{			DataContainer dc = containers.getContainer("SwportContainer");			if (dc == null) {				Log.w("NO_CONTAINER", "No SwportContainer found, plugin may not be loaded");				return;			}			if (!(dc instanceof SwportContainer)) {				Log.w("NO_CONTAINER", "Container is not an SwportContainer! " + dc);				return;			}			sc = (SwportContainer)dc;		}		String netboxid = nb.getNetboxidS();		String ip = nb.getIp();		String cs_ro = nb.getCommunityRo();		String type = nb.getType();		this.sSnmp = sSnmp;		process(nb, netboxid, ip, cs_ro, type, sc);		// Commit data		sc.commit();	}	private void process(Netbox nb, String netboxid, String ip, String cs_ro, String typeid, SwportContainer sc) throws TimeoutException	{		// Set vlan in interface		Swport trunkPort = null;		Set vlanSet = new HashSet();		for (Iterator it = sc.swportIterator(); it.hasNext();) {			Swport swp = (Swport) it.next();			String ifdescr = swp.getInterface();			if (ifdescr == null) continue;			int vlan;			int trunkVlan = -1;			try {				ResultSet rs = Database.query("SELECT vlan FROM netbox JOIN prefix USING(prefixid) JOIN vlan USING(vlanid) WHERE netboxid="+nb.getNetboxid());				if (rs.next()) {					trunkVlan = rs.getInt("vlan");				}			} catch (SQLException e) {			}			// FastEthernet0.66-802.1Q vLAN subif			if ( (vlan=extractVlan("FastEthernet0.(\\d+)-802.1Q vLAN subif", ifdescr)) > 0) {				swp.setVlan(vlan);			} else							// Do0.66			if ( (vlan=extractVlan("Do0.(\\d+)", ifdescr)) > 0) {			    swp.setVlan(vlan);			} else			// Vi0.66			if ( (vlan=extractVlan("Vi0.(\\d+)", ifdescr)) > 0) {				swp.setVlan(vlan);			}			if (vlan == trunkVlan && ifdescr.indexOf("Ethernet") >= 0) {				trunkPort = swp;			}			if (vlan >= 0) {				vlanSet.add(""+vlan);			}		}		if (trunkPort != null) {			trunkPort.setTrunk(true);			for (Iterator it = vlanSet.iterator(); it.hasNext();) {				String vlan = (String)it.next();				trunkPort.addTrunkVlan(vlan);			}		}	}	private int extractVlan(String pattern, String ifdescr) {		if (ifdescr.matches(pattern)) {			Matcher m = Pattern.compile(pattern).matcher(ifdescr);			m.matches();			try {				return Integer.parseInt(m.group(1));			} catch (Exception e) {			}		}		return -1;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -