1 20 21 package org.snmp4j.agent.mo.snmp; 22 23 import org.snmp4j.smi.OID; 24 import java.net.Inet4Address ; 25 import org.snmp4j.smi.UdpAddress; 26 import java.net.Inet6Address ; 27 import org.snmp4j.smi.OctetString; 28 import org.snmp4j.smi.Address; 29 import org.snmp4j.smi.TransportIpAddress; 30 import org.snmp4j.smi.TcpAddress; 31 import org.snmp4j.log.LogFactory; 32 import org.snmp4j.log.LogAdapter; 33 34 public class TDomainAddressFactoryImpl implements TDomainAddressFactory { 35 36 private static final LogAdapter logger = 37 LogFactory.getLogger(TDomainAddressFactoryImpl.class); 38 39 public TDomainAddressFactoryImpl() { 40 } 41 42 public Address createAddress(OID transportDomain, OctetString address) { 43 if (TransportDomains.snmpUDPDomain.equals(transportDomain) || 44 TransportDomains.transportDomainUdpIpv4.equals(transportDomain) || 45 TransportDomains.transportDomainTcpIpv4.equals(transportDomain) || 46 TransportDomains.transportDomainUdpIpv6.equals(transportDomain) || 47 TransportDomains.transportDomainTcpIpv6.equals(transportDomain)) { 48 TransportIpAddress transportIpAddress; 49 if (TransportDomains.transportDomainTcpIpv4.equals(transportDomain) || 50 TransportDomains.transportDomainTcpIpv6.equals(transportDomain)) { 51 transportIpAddress = new TcpAddress(); 52 } 53 else { 54 transportIpAddress = new UdpAddress(); 55 } 56 try { 57 transportIpAddress.setTransportAddress(address); 58 } 59 catch (Exception ex) { 60 logger.debug("Invalid TransportAddress format '" + address + 61 "' for domain " + transportDomain); 62 return null; 63 } 64 return transportIpAddress; 65 } 66 return null; 67 } 68 69 public boolean isValidAddress(OID transportDomain, OctetString address) { 70 try { 71 Address addr = createAddress(transportDomain, address); 72 if (addr != null) { 73 return true; 74 } 75 } 76 catch (Exception ex) { 77 logger.debug("Address is not valid TDomain address: " + address+ 78 "; details: "+ex.getMessage()); 79 } 80 return false; 81 } 82 83 public OID getTransportDomain(Address address) { 84 if (address instanceof TransportIpAddress) { 85 TransportIpAddress tipaddr = (TransportIpAddress) address; 86 if (tipaddr.getInetAddress() instanceof Inet4Address ) { 87 if (address instanceof UdpAddress) { 88 return TransportDomains.transportDomainUdpIpv4; 89 } 90 else if (address instanceof TcpAddress) { 91 return TransportDomains.transportDomainTcpIpv4; 92 } 93 } 94 else if (tipaddr.getInetAddress() instanceof Inet6Address ) { 95 if (address instanceof UdpAddress) { 96 return TransportDomains.transportDomainUdpIpv6; 97 } 98 else if (address instanceof TcpAddress) { 99 return TransportDomains.transportDomainTcpIpv6; 100 } 101 } 102 } 103 return null; 104 } 105 106 public OctetString getAddress(Address address) { 107 if (address instanceof TransportIpAddress) { 108 TransportIpAddress tipaddr = (TransportIpAddress) address; 109 byte[] addrBytes = tipaddr.getInetAddress().getAddress(); 110 OctetString addr = new OctetString(addrBytes); 111 addr.append((byte) (tipaddr.getPort() >> 16)); 112 addr.append((byte) (tipaddr.getPort() & 0xFF)); 113 return addr; 114 } 115 return null; 116 } 117 118 } 119 | Popular Tags |