mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-15 17:31:31 +02:00
Fix naming conventions for CORD apps.
Change-Id: I0b1d4dd276301b726269376eec137511c8e0a805
This commit is contained in:
parent
f006ddd400
commit
b92cc51fa6
@ -15,17 +15,17 @@
|
|||||||
*/
|
*/
|
||||||
package org.onosproject.aaa;
|
package org.onosproject.aaa;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
|
|
||||||
import org.onosproject.core.ApplicationId;
|
import org.onosproject.core.ApplicationId;
|
||||||
import org.onosproject.net.config.Config;
|
import org.onosproject.net.config.Config;
|
||||||
import org.onosproject.net.config.basics.BasicElementConfig;
|
import org.onosproject.net.config.basics.BasicElementConfig;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Network config for the AAA app.
|
* Network config for the AAA app.
|
||||||
*/
|
*/
|
||||||
public class AAAConfig extends Config<ApplicationId> {
|
public class AaaConfig extends Config<ApplicationId> {
|
||||||
|
|
||||||
private static final String RADIUS_IP = "radiusIp";
|
private static final String RADIUS_IP = "radiusIp";
|
||||||
private static final String RADIUS_SERVER_PORT = "1812";
|
private static final String RADIUS_SERVER_PORT = "1812";
|
||||||
@ -221,7 +221,7 @@ public class AAAConfig extends Config<ApplicationId> {
|
|||||||
*
|
*
|
||||||
* @return radius server UDP port.
|
* @return radius server UDP port.
|
||||||
*/
|
*/
|
||||||
public short radiusServerUDPPort() {
|
public short radiusServerUdpPort() {
|
||||||
return Short.parseShort(getStringProperty(RADIUS_SERVER_PORT,
|
return Short.parseShort(getStringProperty(RADIUS_SERVER_PORT,
|
||||||
DEFAULT_RADIUS_SERVER_PORT));
|
DEFAULT_RADIUS_SERVER_PORT));
|
||||||
}
|
}
|
||||||
@ -232,7 +232,7 @@ public class AAAConfig extends Config<ApplicationId> {
|
|||||||
* @param port new RADIUS UDP port; -1 to clear
|
* @param port new RADIUS UDP port; -1 to clear
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public BasicElementConfig radiusServerUDPPort(short port) {
|
public BasicElementConfig radiusServerUdpPort(short port) {
|
||||||
return (BasicElementConfig) setOrClear(RADIUS_SERVER_PORT, (long) port);
|
return (BasicElementConfig) setOrClear(RADIUS_SERVER_PORT, (long) port);
|
||||||
}
|
}
|
||||||
|
|
@ -15,14 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.onosproject.aaa;
|
package org.onosproject.aaa;
|
||||||
|
|
||||||
import java.io.IOException;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
import java.net.DatagramPacket;
|
|
||||||
import java.net.DatagramSocket;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
|
|
||||||
import org.apache.felix.scr.annotations.Activate;
|
import org.apache.felix.scr.annotations.Activate;
|
||||||
import org.apache.felix.scr.annotations.Component;
|
import org.apache.felix.scr.annotations.Component;
|
||||||
import org.apache.felix.scr.annotations.Deactivate;
|
import org.apache.felix.scr.annotations.Deactivate;
|
||||||
@ -58,7 +51,13 @@ import org.onosproject.net.packet.PacketService;
|
|||||||
import org.onosproject.xosintegration.VoltTenantService;
|
import org.onosproject.xosintegration.VoltTenantService;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.DatagramSocket;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
|
import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
|
||||||
import static org.onosproject.net.packet.PacketPriority.CONTROL;
|
import static org.onosproject.net.packet.PacketPriority.CONTROL;
|
||||||
@ -68,7 +67,7 @@ import static org.slf4j.LoggerFactory.getLogger;
|
|||||||
* AAA application for ONOS.
|
* AAA application for ONOS.
|
||||||
*/
|
*/
|
||||||
@Component(immediate = true)
|
@Component(immediate = true)
|
||||||
public class AAA {
|
public class AaaManager {
|
||||||
|
|
||||||
// for verbose output
|
// for verbose output
|
||||||
private final Logger log = getLogger(getClass());
|
private final Logger log = getLogger(getClass());
|
||||||
@ -122,12 +121,12 @@ public class AAA {
|
|||||||
|
|
||||||
// Configuration properties factory
|
// Configuration properties factory
|
||||||
private final ConfigFactory factory =
|
private final ConfigFactory factory =
|
||||||
new ConfigFactory<ApplicationId, AAAConfig>(APP_SUBJECT_FACTORY,
|
new ConfigFactory<ApplicationId, AaaConfig>(APP_SUBJECT_FACTORY,
|
||||||
AAAConfig.class,
|
AaaConfig.class,
|
||||||
"AAA") {
|
"AAA") {
|
||||||
@Override
|
@Override
|
||||||
public AAAConfig createConfig() {
|
public AaaConfig createConfig() {
|
||||||
return new AAAConfig();
|
return new AaaConfig();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -175,7 +174,7 @@ public class AAA {
|
|||||||
// "org.onosproject.aaa" is the FQDN of our app
|
// "org.onosproject.aaa" is the FQDN of our app
|
||||||
appId = coreService.registerApplication("org.onosproject.aaa");
|
appId = coreService.registerApplication("org.onosproject.aaa");
|
||||||
|
|
||||||
cfgListener.reconfigureNetwork(netCfgService.getConfig(appId, AAAConfig.class));
|
cfgListener.reconfigureNetwork(netCfgService.getConfig(appId, AaaConfig.class));
|
||||||
|
|
||||||
// register our event handler
|
// register our event handler
|
||||||
packetService.addProcessor(processor, PacketProcessor.director(2));
|
packetService.addProcessor(processor, PacketProcessor.director(2));
|
||||||
@ -207,7 +206,7 @@ public class AAA {
|
|||||||
executor.shutdownNow();
|
executor.shutdownNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void sendRADIUSPacket(RADIUS radiusPacket) {
|
protected void sendRadiusPacket(RADIUS radiusPacket) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final byte[] data = radiusPacket.serialize();
|
final byte[] data = radiusPacket.serialize();
|
||||||
@ -305,7 +304,7 @@ public class AAA {
|
|||||||
stateMachine.username());
|
stateMachine.username());
|
||||||
|
|
||||||
radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP,
|
radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP,
|
||||||
AAA.this.nasIpAddress.getAddress());
|
AaaManager.this.nasIpAddress.getAddress());
|
||||||
|
|
||||||
radiusPayload.encapsulateMessage(eapPacket);
|
radiusPayload.encapsulateMessage(eapPacket);
|
||||||
|
|
||||||
@ -320,7 +319,7 @@ public class AAA {
|
|||||||
private void handleSupplicantPacket(InboundPacket inPacket) throws StateMachineException {
|
private void handleSupplicantPacket(InboundPacket inPacket) throws StateMachineException {
|
||||||
Ethernet ethPkt = inPacket.parsed();
|
Ethernet ethPkt = inPacket.parsed();
|
||||||
// Where does it come from?
|
// Where does it come from?
|
||||||
MacAddress srcMAC = ethPkt.getSourceMAC();
|
MacAddress srcMac = ethPkt.getSourceMAC();
|
||||||
|
|
||||||
DeviceId deviceId = inPacket.receivedFrom().deviceId();
|
DeviceId deviceId = inPacket.receivedFrom().deviceId();
|
||||||
PortNumber portNumber = inPacket.receivedFrom().port();
|
PortNumber portNumber = inPacket.receivedFrom().port();
|
||||||
@ -340,10 +339,10 @@ public class AAA {
|
|||||||
|
|
||||||
//send an EAP Request/Identify to the supplicant
|
//send an EAP Request/Identify to the supplicant
|
||||||
EAP eapPayload = new EAP(EAP.REQUEST, stateMachine.identifier(), EAP.ATTR_IDENTITY, null);
|
EAP eapPayload = new EAP(EAP.REQUEST, stateMachine.identifier(), EAP.ATTR_IDENTITY, null);
|
||||||
Ethernet eth = buildEapolResponse(srcMAC, MacAddress.valueOf(nasMacAddress),
|
Ethernet eth = buildEapolResponse(srcMac, MacAddress.valueOf(nasMacAddress),
|
||||||
ethPkt.getVlanID(), EAPOL.EAPOL_PACKET,
|
ethPkt.getVlanID(), EAPOL.EAPOL_PACKET,
|
||||||
eapPayload);
|
eapPayload);
|
||||||
stateMachine.setSupplicantAddress(srcMAC);
|
stateMachine.setSupplicantAddress(srcMac);
|
||||||
stateMachine.setVlanId(ethPkt.getVlanID());
|
stateMachine.setVlanId(ethPkt.getVlanID());
|
||||||
|
|
||||||
sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint());
|
sendPacketToSupplicant(eth, stateMachine.supplicantConnectpoint());
|
||||||
@ -362,9 +361,9 @@ public class AAA {
|
|||||||
stateMachine.setUsername(eapPacket.getData());
|
stateMachine.setUsername(eapPacket.getData());
|
||||||
|
|
||||||
radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket);
|
radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket);
|
||||||
radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret);
|
radiusPayload.addMessageAuthenticator(AaaManager.this.radiusSecret);
|
||||||
|
|
||||||
sendRADIUSPacket(radiusPayload);
|
sendRadiusPacket(radiusPayload);
|
||||||
|
|
||||||
// change the state to "PENDING"
|
// change the state to "PENDING"
|
||||||
stateMachine.requestAccess();
|
stateMachine.requestAccess();
|
||||||
@ -382,8 +381,8 @@ public class AAA {
|
|||||||
|
|
||||||
radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE,
|
radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE,
|
||||||
stateMachine.challengeState());
|
stateMachine.challengeState());
|
||||||
radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret);
|
radiusPayload.addMessageAuthenticator(AaaManager.this.radiusSecret);
|
||||||
sendRADIUSPacket(radiusPayload);
|
sendRadiusPacket(radiusPayload);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EAP.ATTR_TLS:
|
case EAP.ATTR_TLS:
|
||||||
@ -391,11 +390,11 @@ public class AAA {
|
|||||||
radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket);
|
radiusPayload = getRadiusPayload(stateMachine, stateMachine.identifier(), eapPacket);
|
||||||
|
|
||||||
radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE,
|
radiusPayload.setAttribute(RADIUSAttribute.RADIUS_ATTR_STATE,
|
||||||
stateMachine.challengeState());
|
stateMachine.challengeState());
|
||||||
stateMachine.setRequestAuthenticator(radiusPayload.generateAuthCode());
|
stateMachine.setRequestAuthenticator(radiusPayload.generateAuthCode());
|
||||||
|
|
||||||
radiusPayload.addMessageAuthenticator(AAA.this.radiusSecret);
|
radiusPayload.addMessageAuthenticator(AaaManager.this.radiusSecret);
|
||||||
sendRADIUSPacket(radiusPayload);
|
sendRadiusPacket(radiusPayload);
|
||||||
|
|
||||||
if (stateMachine.state() != StateMachine.STATE_PENDING) {
|
if (stateMachine.state() != StateMachine.STATE_PENDING) {
|
||||||
stateMachine.requestAccess();
|
stateMachine.requestAccess();
|
||||||
@ -512,10 +511,10 @@ public class AAA {
|
|||||||
*
|
*
|
||||||
* @param cfg configuration object
|
* @param cfg configuration object
|
||||||
*/
|
*/
|
||||||
private void reconfigureNetwork(AAAConfig cfg) {
|
private void reconfigureNetwork(AaaConfig cfg) {
|
||||||
AAAConfig newCfg;
|
AaaConfig newCfg;
|
||||||
if (cfg == null) {
|
if (cfg == null) {
|
||||||
newCfg = new AAAConfig();
|
newCfg = new AaaConfig();
|
||||||
} else {
|
} else {
|
||||||
newCfg = cfg;
|
newCfg = cfg;
|
||||||
}
|
}
|
||||||
@ -540,8 +539,8 @@ public class AAA {
|
|||||||
if (newCfg.radiusPort() != -1) {
|
if (newCfg.radiusPort() != -1) {
|
||||||
radiusPort = newCfg.radiusPort();
|
radiusPort = newCfg.radiusPort();
|
||||||
}
|
}
|
||||||
if (newCfg.radiusServerUDPPort() != -1) {
|
if (newCfg.radiusServerUdpPort() != -1) {
|
||||||
radiusServerPort = newCfg.radiusServerUDPPort();
|
radiusServerPort = newCfg.radiusServerUdpPort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -550,9 +549,9 @@ public class AAA {
|
|||||||
|
|
||||||
if ((event.type() == NetworkConfigEvent.Type.CONFIG_ADDED ||
|
if ((event.type() == NetworkConfigEvent.Type.CONFIG_ADDED ||
|
||||||
event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED) &&
|
event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED) &&
|
||||||
event.configClass().equals(AAAConfig.class)) {
|
event.configClass().equals(AaaConfig.class)) {
|
||||||
|
|
||||||
AAAConfig cfg = netCfgService.getConfig(appId, AAAConfig.class);
|
AaaConfig cfg = netCfgService.getConfig(appId, AaaConfig.class);
|
||||||
reconfigureNetwork(cfg);
|
reconfigureNetwork(cfg);
|
||||||
log.info("Reconfigured");
|
log.info("Reconfigured");
|
||||||
}
|
}
|
@ -34,9 +34,9 @@ import static org.junit.Assert.assertThat;
|
|||||||
* server and sends live packets over the network to it.
|
* server and sends live packets over the network to it.
|
||||||
*/
|
*/
|
||||||
@Ignore ("This should not be run as part of the standard build")
|
@Ignore ("This should not be run as part of the standard build")
|
||||||
public class AAAIntegrationTest extends AAATestBase {
|
public class AaaIntegrationTest extends AaaTestBase {
|
||||||
|
|
||||||
private AAA aaa;
|
private AaaManager aaa;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mocks the network config registry.
|
* Mocks the network config registry.
|
||||||
@ -46,7 +46,7 @@ public class AAAIntegrationTest extends AAATestBase {
|
|||||||
extends NetworkConfigRegistryAdapter {
|
extends NetworkConfigRegistryAdapter {
|
||||||
@Override
|
@Override
|
||||||
public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
|
public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
|
||||||
return (C) new AAAConfig();
|
return (C) new AaaConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ public class AAAIntegrationTest extends AAATestBase {
|
|||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
aaa = new AAA();
|
aaa = new AaaManager();
|
||||||
aaa.netCfgService = new TestNetworkConfigRegistry();
|
aaa.netCfgService = new TestNetworkConfigRegistry();
|
||||||
aaa.coreService = new CoreServiceAdapter();
|
aaa.coreService = new CoreServiceAdapter();
|
||||||
aaa.packetService = new MockPacketService();
|
aaa.packetService = new MockPacketService();
|
||||||
@ -136,9 +136,9 @@ public class AAAIntegrationTest extends AAATestBase {
|
|||||||
|
|
||||||
Ethernet successRadiusPacket = fetchPacket(2);
|
Ethernet successRadiusPacket = fetchPacket(2);
|
||||||
assertThat(successRadiusPacket, notNullValue());
|
assertThat(successRadiusPacket, notNullValue());
|
||||||
EAPOL successEAPOL = (EAPOL) successRadiusPacket.getPayload();
|
EAPOL successEapol = (EAPOL) successRadiusPacket.getPayload();
|
||||||
EAP successEAP = (EAP) successEAPOL.getPayload();
|
EAP successEap = (EAP) successEapol.getPayload();
|
||||||
assertThat(successEAP.getCode(), is(EAP.SUCCESS));
|
assertThat(successEap.getCode(), is(EAP.SUCCESS));
|
||||||
|
|
||||||
// State machine should be in authorized state
|
// State machine should be in authorized state
|
||||||
|
|
@ -15,9 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.onosproject.aaa;
|
package org.onosproject.aaa;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import com.google.common.base.Charsets;
|
||||||
import java.net.UnknownHostException;
|
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -32,7 +30,8 @@ import org.onosproject.core.CoreServiceAdapter;
|
|||||||
import org.onosproject.net.config.Config;
|
import org.onosproject.net.config.Config;
|
||||||
import org.onosproject.net.config.NetworkConfigRegistryAdapter;
|
import org.onosproject.net.config.NetworkConfigRegistryAdapter;
|
||||||
|
|
||||||
import com.google.common.base.Charsets;
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.hamcrest.Matchers.notNullValue;
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
@ -41,14 +40,14 @@ import static org.junit.Assert.assertThat;
|
|||||||
/**
|
/**
|
||||||
* Set of tests of the ONOS application component.
|
* Set of tests of the ONOS application component.
|
||||||
*/
|
*/
|
||||||
public class AAATest extends AAATestBase {
|
public class AaaManagerTest extends AaaTestBase {
|
||||||
|
|
||||||
static final String BAD_IP_ADDRESS = "198.51.100.0";
|
static final String BAD_IP_ADDRESS = "198.51.100.0";
|
||||||
|
|
||||||
private AAA aaa;
|
private AaaManager aaaManager;
|
||||||
|
|
||||||
class AAAWithoutRadiusServer extends AAA {
|
class AaaManagerWithoutRadiusServer extends AaaManager {
|
||||||
protected void sendRADIUSPacket(RADIUS radiusPacket) {
|
protected void sendRadiusPacket(RADIUS radiusPacket) {
|
||||||
savePacket(radiusPacket);
|
savePacket(radiusPacket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -57,7 +56,7 @@ public class AAATest extends AAATestBase {
|
|||||||
* Mocks the AAAConfig class to force usage of an unroutable address for the
|
* Mocks the AAAConfig class to force usage of an unroutable address for the
|
||||||
* RADIUS server.
|
* RADIUS server.
|
||||||
*/
|
*/
|
||||||
static class MockAAAConfig extends AAAConfig {
|
static class MockAaaConfig extends AaaConfig {
|
||||||
@Override
|
@Override
|
||||||
public InetAddress radiusIp() {
|
public InetAddress radiusIp() {
|
||||||
try {
|
try {
|
||||||
@ -77,7 +76,7 @@ public class AAATest extends AAATestBase {
|
|||||||
extends NetworkConfigRegistryAdapter {
|
extends NetworkConfigRegistryAdapter {
|
||||||
@Override
|
@Override
|
||||||
public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
|
public <S, C extends Config<S>> C getConfig(S subject, Class<C> configClass) {
|
||||||
AAAConfig aaaConfig = new MockAAAConfig();
|
AaaConfig aaaConfig = new MockAaaConfig();
|
||||||
return (C) aaaConfig;
|
return (C) aaaConfig;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -90,7 +89,7 @@ public class AAATest extends AAATestBase {
|
|||||||
* @param challengeType type to use in challenge packet
|
* @param challengeType type to use in challenge packet
|
||||||
* @return Ethernet packet
|
* @return Ethernet packet
|
||||||
*/
|
*/
|
||||||
private RADIUS constructRADIUSCodeAccessChallengePacket(byte challengeCode, byte challengeType) {
|
private RADIUS constructRadiusCodeAccessChallengePacket(byte challengeCode, byte challengeType) {
|
||||||
|
|
||||||
String challenge = "12345678901234567";
|
String challenge = "12345678901234567";
|
||||||
|
|
||||||
@ -116,11 +115,11 @@ public class AAATest extends AAATestBase {
|
|||||||
*/
|
*/
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
aaa = new AAAWithoutRadiusServer();
|
aaaManager = new AaaManagerWithoutRadiusServer();
|
||||||
aaa.netCfgService = new TestNetworkConfigRegistry();
|
aaaManager.netCfgService = new TestNetworkConfigRegistry();
|
||||||
aaa.coreService = new CoreServiceAdapter();
|
aaaManager.coreService = new CoreServiceAdapter();
|
||||||
aaa.packetService = new MockPacketService();
|
aaaManager.packetService = new MockPacketService();
|
||||||
aaa.activate();
|
aaaManager.activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -128,7 +127,7 @@ public class AAATest extends AAATestBase {
|
|||||||
*/
|
*/
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
aaa.deactivate();
|
aaaManager.deactivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -138,7 +137,7 @@ public class AAATest extends AAATestBase {
|
|||||||
* @throws DeserializationException if deserialization of the packet contents
|
* @throws DeserializationException if deserialization of the packet contents
|
||||||
* fails.
|
* fails.
|
||||||
*/
|
*/
|
||||||
private void checkRADIUSPacketFromSupplicant(RADIUS radius)
|
private void checkRadiusPacketFromSupplicant(RADIUS radius)
|
||||||
throws DeserializationException {
|
throws DeserializationException {
|
||||||
assertThat(radius, notNullValue());
|
assertThat(radius, notNullValue());
|
||||||
|
|
||||||
@ -173,7 +172,7 @@ public class AAATest extends AAATestBase {
|
|||||||
sendPacket(startPacket);
|
sendPacket(startPacket);
|
||||||
|
|
||||||
Ethernet responsePacket = (Ethernet) fetchPacket(0);
|
Ethernet responsePacket = (Ethernet) fetchPacket(0);
|
||||||
checkRadiusPacket(aaa, responsePacket, EAP.ATTR_IDENTITY);
|
checkRadiusPacket(aaaManager, responsePacket, EAP.ATTR_IDENTITY);
|
||||||
|
|
||||||
// (2) Supplicant identify
|
// (2) Supplicant identify
|
||||||
|
|
||||||
@ -182,7 +181,7 @@ public class AAATest extends AAATestBase {
|
|||||||
|
|
||||||
RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
|
RADIUS radiusIdentifyPacket = (RADIUS) fetchPacket(1);
|
||||||
|
|
||||||
checkRADIUSPacketFromSupplicant(radiusIdentifyPacket);
|
checkRadiusPacketFromSupplicant(radiusIdentifyPacket);
|
||||||
|
|
||||||
assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
|
assertThat(radiusIdentifyPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
|
||||||
assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()),
|
assertThat(new String(radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_USERNAME).getValue()),
|
||||||
@ -192,7 +191,7 @@ public class AAATest extends AAATestBase {
|
|||||||
IpAddress.valueOf(IpAddress.Version.INET,
|
IpAddress.valueOf(IpAddress.Version.INET,
|
||||||
radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP)
|
radiusIdentifyPacket.getAttribute(RADIUSAttribute.RADIUS_ATTR_NAS_IP)
|
||||||
.getValue());
|
.getValue());
|
||||||
assertThat(nasIp.toString(), is(aaa.nasIpAddress.getHostAddress()));
|
assertThat(nasIp.toString(), is(aaaManager.nasIpAddress.getHostAddress()));
|
||||||
|
|
||||||
// State machine should have been created by now
|
// State machine should have been created by now
|
||||||
|
|
||||||
@ -204,11 +203,11 @@ public class AAATest extends AAATestBase {
|
|||||||
// (3) RADIUS MD5 challenge
|
// (3) RADIUS MD5 challenge
|
||||||
|
|
||||||
RADIUS radiusCodeAccessChallengePacket =
|
RADIUS radiusCodeAccessChallengePacket =
|
||||||
constructRADIUSCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5);
|
constructRadiusCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_CHALLENGE, EAP.ATTR_MD5);
|
||||||
aaa.radiusListener.handleRadiusPacket(radiusCodeAccessChallengePacket);
|
aaaManager.radiusListener.handleRadiusPacket(radiusCodeAccessChallengePacket);
|
||||||
|
|
||||||
Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2);
|
Ethernet radiusChallengeMD5Packet = (Ethernet) fetchPacket(2);
|
||||||
checkRadiusPacket(aaa, radiusChallengeMD5Packet, EAP.ATTR_MD5);
|
checkRadiusPacket(aaaManager, radiusChallengeMD5Packet, EAP.ATTR_MD5);
|
||||||
|
|
||||||
// (4) Supplicant MD5 response
|
// (4) Supplicant MD5 response
|
||||||
|
|
||||||
@ -221,7 +220,7 @@ public class AAATest extends AAATestBase {
|
|||||||
|
|
||||||
RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3);
|
RADIUS responseMd5RadiusPacket = (RADIUS) fetchPacket(3);
|
||||||
|
|
||||||
checkRADIUSPacketFromSupplicant(responseMd5RadiusPacket);
|
checkRadiusPacketFromSupplicant(responseMd5RadiusPacket);
|
||||||
assertThat(responseMd5RadiusPacket.getIdentifier(), is((byte) 0));
|
assertThat(responseMd5RadiusPacket.getIdentifier(), is((byte) 0));
|
||||||
assertThat(responseMd5RadiusPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
|
assertThat(responseMd5RadiusPacket.getCode(), is(RADIUS.RADIUS_CODE_ACCESS_REQUEST));
|
||||||
|
|
||||||
@ -233,11 +232,11 @@ public class AAATest extends AAATestBase {
|
|||||||
// (5) RADIUS Success
|
// (5) RADIUS Success
|
||||||
|
|
||||||
RADIUS successPacket =
|
RADIUS successPacket =
|
||||||
constructRADIUSCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS);
|
constructRadiusCodeAccessChallengePacket(RADIUS.RADIUS_CODE_ACCESS_ACCEPT, EAP.SUCCESS);
|
||||||
aaa.radiusListener.handleRadiusPacket((successPacket));
|
aaaManager.radiusListener.handleRadiusPacket((successPacket));
|
||||||
Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4);
|
Ethernet supplicantSuccessPacket = (Ethernet) fetchPacket(4);
|
||||||
|
|
||||||
checkRadiusPacket(aaa, supplicantSuccessPacket, EAP.SUCCESS);
|
checkRadiusPacket(aaaManager, supplicantSuccessPacket, EAP.SUCCESS);
|
||||||
|
|
||||||
// State machine should be in authorized state
|
// State machine should be in authorized state
|
||||||
|
|
||||||
@ -251,9 +250,9 @@ public class AAATest extends AAATestBase {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testConfig() {
|
public void testConfig() {
|
||||||
assertThat(aaa.nasIpAddress.getHostAddress(), is(AAAConfig.DEFAULT_NAS_IP));
|
assertThat(aaaManager.nasIpAddress.getHostAddress(), is(AaaConfig.DEFAULT_NAS_IP));
|
||||||
assertThat(aaa.nasMacAddress, is(AAAConfig.DEFAULT_NAS_MAC));
|
assertThat(aaaManager.nasMacAddress, is(AaaConfig.DEFAULT_NAS_MAC));
|
||||||
assertThat(aaa.radiusIpAddress.getHostAddress(), is(BAD_IP_ADDRESS));
|
assertThat(aaaManager.radiusIpAddress.getHostAddress(), is(BAD_IP_ADDRESS));
|
||||||
assertThat(aaa.radiusMacAddress, is(AAAConfig.DEFAULT_RADIUS_MAC));
|
assertThat(aaaManager.radiusMacAddress, is(AaaConfig.DEFAULT_RADIUS_MAC));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,11 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.onosproject.aaa;
|
package org.onosproject.aaa;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.security.MessageDigest;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.onlab.packet.BasePacket;
|
import org.onlab.packet.BasePacket;
|
||||||
import org.onlab.packet.EAP;
|
import org.onlab.packet.EAP;
|
||||||
import org.onlab.packet.EAPOL;
|
import org.onlab.packet.EAPOL;
|
||||||
@ -34,6 +29,11 @@ import org.onosproject.net.packet.PacketContext;
|
|||||||
import org.onosproject.net.packet.PacketProcessor;
|
import org.onosproject.net.packet.PacketProcessor;
|
||||||
import org.onosproject.net.packet.PacketServiceAdapter;
|
import org.onosproject.net.packet.PacketServiceAdapter;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.instanceOf;
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.hamcrest.Matchers.notNullValue;
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
@ -44,7 +44,7 @@ import static org.onosproject.net.NetTestTools.connectPoint;
|
|||||||
/**
|
/**
|
||||||
* Common methods for AAA app testing.
|
* Common methods for AAA app testing.
|
||||||
*/
|
*/
|
||||||
public class AAATestBase {
|
public class AaaTestBase {
|
||||||
|
|
||||||
MacAddress clientMac = MacAddress.valueOf("1a:1a:1a:1a:1a:1a");
|
MacAddress clientMac = MacAddress.valueOf("1a:1a:1a:1a:1a:1a");
|
||||||
MacAddress serverMac = MacAddress.valueOf("2a:2a:2a:2a:2a:2a");
|
MacAddress serverMac = MacAddress.valueOf("2a:2a:2a:2a:2a:2a");
|
||||||
@ -204,10 +204,10 @@ public class AAATestBase {
|
|||||||
* @param radiusPacket packet to check
|
* @param radiusPacket packet to check
|
||||||
* @param code expected code
|
* @param code expected code
|
||||||
*/
|
*/
|
||||||
void checkRadiusPacket(AAA aaa, Ethernet radiusPacket, byte code) {
|
void checkRadiusPacket(AaaManager aaaManager, Ethernet radiusPacket, byte code) {
|
||||||
|
|
||||||
assertThat(radiusPacket.getSourceMAC(),
|
assertThat(radiusPacket.getSourceMAC(),
|
||||||
is(MacAddress.valueOf(aaa.nasMacAddress)));
|
is(MacAddress.valueOf(aaaManager.nasMacAddress)));
|
||||||
assertThat(radiusPacket.getDestinationMAC(), is(serverMac));
|
assertThat(radiusPacket.getDestinationMAC(), is(serverMac));
|
||||||
|
|
||||||
assertThat(radiusPacket.getPayload(), instanceOf(EAPOL.class));
|
assertThat(radiusPacket.getPayload(), instanceOf(EAPOL.class));
|
@ -62,7 +62,7 @@ import static org.slf4j.LoggerFactory.getLogger;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Component(immediate = true)
|
@Component(immediate = true)
|
||||||
public class OLT implements AccessDeviceService {
|
public class Olt implements AccessDeviceService {
|
||||||
private final Logger log = getLogger(getClass());
|
private final Logger log = getLogger(getClass());
|
||||||
|
|
||||||
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
@ -68,7 +68,7 @@ import static org.slf4j.LoggerFactory.getLogger;
|
|||||||
*/
|
*/
|
||||||
@Component(immediate = true)
|
@Component(immediate = true)
|
||||||
@Service
|
@Service
|
||||||
public class OnosXOSIntegrationManager implements VoltTenantService {
|
public class OnosXosIntegrationManager implements VoltTenantService {
|
||||||
private static final String XOS_SERVER_ADDRESS_PROPERTY_NAME =
|
private static final String XOS_SERVER_ADDRESS_PROPERTY_NAME =
|
||||||
"xosServerAddress";
|
"xosServerAddress";
|
||||||
private static final String XOS_SERVER_PORT_PROPERTY_NAME =
|
private static final String XOS_SERVER_PORT_PROPERTY_NAME =
|
||||||
@ -355,12 +355,12 @@ public class OnosXOSIntegrationManager implements VoltTenantService {
|
|||||||
|
|
||||||
String retJson = postRest(json);
|
String retJson = postRest(json);
|
||||||
|
|
||||||
fetchCPELocation(tenantToCreate, retJson);
|
fetchCpeLocation(tenantToCreate, retJson);
|
||||||
|
|
||||||
return newTenant;
|
return newTenant;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fetchCPELocation(VoltTenant newTenant, String jsonString) {
|
private void fetchCpeLocation(VoltTenant newTenant, String jsonString) {
|
||||||
JsonObject json = JsonObject.readFrom(jsonString);
|
JsonObject json = JsonObject.readFrom(jsonString);
|
||||||
|
|
||||||
if (json.get("computeNodeName") != null) {
|
if (json.get("computeNodeName") != null) {
|
@ -57,7 +57,7 @@ import static org.slf4j.LoggerFactory.getLogger;
|
|||||||
/**
|
/**
|
||||||
* Pipeliner for OLT device.
|
* Pipeliner for OLT device.
|
||||||
*/
|
*/
|
||||||
public class OLTPipeline extends AbstractHandlerBehaviour implements Pipeliner {
|
public class OltPipeline extends AbstractHandlerBehaviour implements Pipeliner {
|
||||||
|
|
||||||
private final Logger log = getLogger(getClass());
|
private final Logger log = getLogger(getClass());
|
||||||
|
|
@ -78,12 +78,12 @@
|
|||||||
<driver name="pmc-olt" extends="default"
|
<driver name="pmc-olt" extends="default"
|
||||||
manufacturer="Big Switch Networks" hwVersion="ivs 0.5" swVersion="ivs 0.5">
|
manufacturer="Big Switch Networks" hwVersion="ivs 0.5" swVersion="ivs 0.5">
|
||||||
<behaviour api="org.onosproject.net.behaviour.Pipeliner"
|
<behaviour api="org.onosproject.net.behaviour.Pipeliner"
|
||||||
impl="org.onosproject.driver.pipeline.OLTPipeline"/>
|
impl="org.onosproject.driver.pipeline.OltPipeline"/>
|
||||||
</driver>
|
</driver>
|
||||||
<driver name="g.fast" extends="default"
|
<driver name="g.fast" extends="default"
|
||||||
manufacturer="TEST1" hwVersion="TEST2" swVersion="TEST3">
|
manufacturer="TEST1" hwVersion="TEST2" swVersion="TEST3">
|
||||||
<behaviour api="org.onosproject.net.behaviour.Pipeliner"
|
<behaviour api="org.onosproject.net.behaviour.Pipeliner"
|
||||||
impl="org.onosproject.driver.pipeline.OLTPipeline"/>
|
impl="org.onosproject.driver.pipeline.OltPipeline"/>
|
||||||
</driver>
|
</driver>
|
||||||
<!-- The SoftRouter driver is meant to be used by any software/NPU based
|
<!-- The SoftRouter driver is meant to be used by any software/NPU based
|
||||||
~ switch that wishes to implement a simple 2-table router. To use this
|
~ switch that wishes to implement a simple 2-table router. To use this
|
||||||
|
Loading…
x
Reference in New Issue
Block a user