package net.onrc.onos.apps.bgproute;

import java.net.InetAddress;

import org.codehaus.jackson.annotate.JsonProperty;

import com.google.common.net.InetAddresses;

public class BgpPeer {
    private final String interfaceName;
    private final InetAddress ipAddress;

    public BgpPeer(@JsonProperty("interface") String interfaceName,
                   @JsonProperty("ipAddress") String ipAddress) {
        this.interfaceName = interfaceName;
        this.ipAddress = InetAddresses.forString(ipAddress);
    }

    public String getInterfaceName() {
        return interfaceName;
    }

    public InetAddress getIpAddress() {
        return ipAddress;
    }
}
