import org.pcmm.gates.impl.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.umu.cops.COPSMsgSender;
import org.umu.cops.prpdp.COPSPdpException;
import org.umu.cops.stack.*;
import org.umu.cops.stack.COPSClientSI.CSIType;
import java.util.Map;
import java.util.Set;
-//temp
-//pcmm
/*
* Example of an UNSOLICITED decision
*
/**
* COPS message transceiver class for provisioning connections at the PDP side.
*/
-public class PCMMPdpMsgSender {
+public class PCMMPdpMsgSender extends COPSMsgSender {
public final static Logger logger = LoggerFactory.getLogger(PCMMPdpMsgSender.class);
- /**
- * Socket connected to PEP
- */
- protected final Socket _sock;
-
- /**
- * COPS client-type that identifies the policy client
- */
- protected final short _clientType;
-
- /**
- * COPS client handle used to uniquely identify a particular PEP's request
- * for a client-type
- */
- protected final COPSHandle _handle;
-
- /**
- *
- */
protected short _transactionID;
protected final short _classifierID;
+
// XXX - this does not need to be here
protected IGateID _gateID;
public PCMMPdpMsgSender(final short clientType, final short tID, final COPSHandle clientHandle,
final Socket sock) throws COPSPdpException {
- if (clientHandle == null) throw new COPSPdpException("Client handle must not be null");
- if (sock == null) throw new COPSPdpException("Socket must not be null");
- // COPS Handle
- _handle = clientHandle;
- _clientType = clientType;
+ super(clientType, clientHandle, sock);
_transactionID = tID;
_classifierID = 0;
- _sock = sock;
- }
-
- /**
- * Gets the client-type
- *
- * @return Client-type value
- */
- public short getClientType() {
- return _clientType;
}
/**
decisionMap.put(new COPSContext(RType.CONFIG, (short)0), decisionSet);
final COPSClientSI clientSD = new COPSClientSI(CNum.DEC, CType.CSI, new COPSData(data, 0, data.length));
-
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, new COPSHandle(_handle.getId()),
- decisionMap, null, clientSD);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, _handle, decisionMap, null, clientSD);
// ** Send the GateSet Decision
try {
// Common Header with the same ClientType as the request
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(),
- new COPSHandle(_handle.getId()), decisionMap, null, clientSD);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, clientSD);
// ** Send the GateSet Decision
// **
// Common Header with the same ClientType as the request
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, new COPSHandle(_handle.getId()),
- decisionMap, null, clientSD);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, _handle, decisionMap, null, clientSD);
// ** Send the GateSet Decision
// **
.setRequestTransmissionPolicy(
PCMMGlobalConfig.BETransmissionPolicy);
- // byte[] content = "1234".getBytes();
-
- // handle.setId(new COPSData(content, 0, content.length));
-
// set transaction ID to gate set
trID.setGateCommandType(ITransactionID.GateSet);
_transactionID = (_transactionID == 0 ? (short) (Math.random() * hashCode()) : _transactionID);
final COPSClientSI clientSD = new COPSClientSI(CSIType.NAMED, new COPSData(data, 0, data.length));
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(),
- new COPSHandle(_handle.getId()), decisionMap, null, clientSD);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, clientSD);
// ** Send the GateSet Decision
// **
decisionMap.put(new COPSContext(RType.CONFIG, (short)0), decisionSet);
final COPSClientSI clientSD = new COPSClientSI(CNum.DEC, CType.CSI, new COPSData(data, 0, data.length));
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(),
- new COPSHandle(_handle.getId()), decisionMap, null, clientSD);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, clientSD);
// ** Send the GateDelete Decision
// **
final Map<COPSContext, Set<COPSDecision>> decisionMap = new HashMap<>();
decisionMap.put(new COPSContext(RType.CONFIG, (short)0), decisionSet);
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), new COPSHandle(_handle.getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, null);
try {
decisionMsg.writeData(_sock);
/*
* <Gate-Info> ::= <Common Header> [<Client Handle>] [<Integrity>]
*/
- final COPSSyncStateMsg msg = new COPSSyncStateMsg(getClientType(), new COPSHandle(_handle.getId()), null);
+ final COPSSyncStateMsg msg = new COPSSyncStateMsg(getClientType(), _handle, null);
try {
msg.writeData(_sock);
} catch (IOException e) {
*/
// Client Handle with the same clientHandle as the request
- final COPSSyncStateMsg msg = new COPSSyncStateMsg(getClientType(), new COPSHandle(_handle.getId()), null);
+ final COPSSyncStateMsg msg = new COPSSyncStateMsg(getClientType(), _handle, null);
try {
msg.writeData(_sock);
} catch (IOException e) {
--- /dev/null
+package org.umu.cops;
+
+import org.umu.cops.stack.COPSHandle;
+
+import java.net.Socket;
+
+/**
+ * Abstract COPS Message sender
+ */
+public abstract class COPSMsgSender {
+
+ /**
+ * COPS client-type that identifies the policy client
+ */
+ protected final short _clientType;
+
+ /**
+ * COPS client handle used to uniquely identify a particular
+ * PEP's request for a client-type
+ */
+ protected final COPSHandle _handle;
+
+ /**
+ * Socket connected to PEP
+ */
+ protected final Socket _sock;
+
+ public COPSMsgSender(final short clientType, final COPSHandle handle, final Socket sock) {
+ if (handle == null) throw new IllegalArgumentException("Client handle must not be null");
+ if (sock == null) throw new IllegalArgumentException("Socket must not be null");
+ this._clientType = clientType;
+ this._handle = handle;
+ this._sock = sock;
+ }
+
+ /**
+ * Gets the client handle
+ * @return Client's <tt>COPSHandle</tt>
+ */
+ public COPSHandle getClientHandle() {
+ return _handle;
+ }
+
+ /**
+ * Gets the client-type
+ * @return Client-type value
+ */
+ public short getClientType() {
+ return _clientType;
+ }
+
+}
package org.umu.cops.ospdp;
+import org.umu.cops.COPSMsgSender;
import org.umu.cops.stack.*;
import org.umu.cops.stack.COPSContext.RType;
import org.umu.cops.stack.COPSDecision.Command;
*
* TODO - change all references of Vector to List<>
*/
-public class COPSPdpOSMsgSender {
- /**
- * Socket connected to PEP
- */
- protected final Socket _sock;
-
- /**
- * COPS client-type that identifies the policy client
- */
- protected final short _clientType;
-
- /**
- * COPS client handle used to uniquely identify a particular
- * PEP's request for a client-type
- */
- protected final COPSHandle _handle;
+public class COPSPdpOSMsgSender extends COPSMsgSender {
/**
* Creates a COPSPepMsgSender
* @param clientHandle Client handle
* @param sock Socket to the PEP
*/
- public COPSPdpOSMsgSender (final short clientType, final COPSHandle clientHandle, final Socket sock) {
- // COPS Handle
- _handle = clientHandle;
- _clientType = clientType;
-
- _sock = sock;
- }
-
- /**
- * Gets the client handle
- * @return Client's <tt>COPSHandle</tt>
- */
- public COPSHandle getClientHandle() {
- return _handle;
- }
-
- /**
- * Gets the client-type
- * @return Client-type value
- */
- public short getClientType() {
- return _clientType;
+ public COPSPdpOSMsgSender(final short clientType, final COPSHandle clientHandle, final Socket sock) {
+ super(clientType, clientHandle, sock);
}
/**
}
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(1, flag, getClientType(),
- new COPSHandle(getClientHandle().getId()), decisions, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(1, flag, getClientType(), _handle, decisions,
+ null, null);
//** Send decision
//**
// Common Header with the same ClientType as the request (default UNSOLICITED)
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), new COPSHandle(_handle.getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, null);
try {
decisionMsg.writeData(_sock);
* @throws COPSPdpException
*
*/
- //FIXME: Unused?
public void sendOpenNewRequestState() throws COPSPdpException {
- /* <Decision Message> ::= <Common Header: Flag UNSOLICITED>
- * <Client Handle>
- * *(<Decision>)
- * [<Integrity>]
- * <Decision> ::= <Context>
- * <Decision: Flags>
- * <Decision: Flags> ::= Install Request-State
- *
- */
-
final Set<COPSDecision> decisionSet = new HashSet<>();
decisionSet.add(new COPSDecision(Command.INSTALL, DecisionFlag.REQSTATE));
final Map<COPSContext, Set<COPSDecision>> decisionMap = new HashMap<>();
// Common Header with the same ClientType as the request (default UNSOLICITED)
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), new COPSHandle(_handle.getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, null);
try {
decisionMsg.writeData(_sock);
* @throws COPSPdpException
*/
public void sendSyncRequestState() throws COPSPdpException {
- /* <Synchronize State Request> ::= <Common Header>
- * [<Client Handle>]
- * [<Integrity>]
- */
-
- // Common Header with the same ClientType as the request
// Client Handle with the same clientHandle as the request
- final COPSSyncStateMsg msg = new COPSSyncStateMsg(_clientType, new COPSHandle(_handle.getId()), null);
+ final COPSSyncStateMsg msg = new COPSSyncStateMsg(_clientType, _handle, null);
try {
msg.writeData(_sock);
} catch (IOException e) {
package org.umu.cops.ospep;
+import org.umu.cops.COPSMsgSender;
import org.umu.cops.stack.*;
import org.umu.cops.stack.COPSContext.RType;
import org.umu.cops.stack.COPSReason.ReasonCode;
/**
* COPS message transceiver class for outsourcing connections at the PEP side.
*/
-public class COPSPepOSMsgSender {
- /**
- * Socket connection to PDP
- */
- protected Socket _sock;
-
- /**
- * COPS client-type that identifies the policy client
- */
- protected short _clientType;
-
- /**
- * COPS client handle used to uniquely identify a particular
- * PEP's request for a client-type
- */
- protected COPSHandle _handle;
+public class COPSPepOSMsgSender extends COPSMsgSender {
/**
* Creates a COPSPepMsgSender
* @param clientHandle Client handle
* @param sock Socket connected to the PDP
*/
- public COPSPepOSMsgSender (final short clientType, final COPSHandle clientHandle, final Socket sock) {
- // COPS Handle
- _handle = clientHandle;
- _clientType = clientType;
-
- _sock = sock;
- }
-
- /**
- * Gets the client handle
- * @return Client's <tt>COPSHandle</tt>
- */
- public COPSHandle getClientHandle() {
- return _handle;
- }
-
- /**
- * Gets the client-type
- * @return Client-type value
- */
- public int getClientType() {
- return _clientType;
+ public COPSPepOSMsgSender(final short clientType, final COPSHandle clientHandle, final Socket sock) {
+ super(clientType, clientHandle, sock);
}
/**
package org.umu.cops.prpdp;
+import org.umu.cops.COPSMsgSender;
import org.umu.cops.stack.*;
import org.umu.cops.stack.COPSContext.RType;
import org.umu.cops.stack.COPSDecision.Command;
*
* TODO - Need to continue refactoring by removing all instances of Hashtable (change to Map<>)
*/
-public class COPSPdpMsgSender {
-
- /**
- * Socket connected to PEP
- */
- protected final Socket _sock;
-
- /**
- * COPS client-type that identifies the policy client
- */
- protected final short _clientType;
-
- /**
- * COPS client handle used to uniquely identify a particular
- * PEP's request for a client-type
- */
- protected final COPSHandle _handle;
+public class COPSPdpMsgSender extends COPSMsgSender {
/**
* Creates a COPSPepMsgSender
* @param sock Socket to the PEP
*/
public COPSPdpMsgSender (final short clientType, final COPSHandle clientHandle, final Socket sock) {
- // COPS Handle
- _handle = clientHandle;
- _clientType = clientType;
-
- _sock = sock;
- }
-
- /**
- * Gets the client handle
- * @return Client's <tt>COPSHandle</tt>
- */
- public COPSHandle getClientHandle() {
- return _handle;
- }
-
- /**
- * Gets the client-type
- * @return Client-type value
- */
- public short getClientType() {
- return _clientType;
+ super(clientType, clientHandle, sock);
}
/**
*/
public void sendDecision(final Map<String, String> removeDecs, Map<String, String> installDecs)
throws COPSPdpException {
- /* <Decision Message> ::= <Common Header: Flag SOLICITED>
- * <Client Handle>
- * *(<Decision>) | <Error>
- * [<Integrity>]
- * <Decision> ::= <Context>
- * <Decision: Flags>
- * [<Named Decision Data: Provisioning>]
- * <Decision: Flags> ::= <Command-Code> NULLFlag
- * <Command-Code> ::= NULLDecision | Install | Remove
- * <Named Decision Data> ::= <<Install Decision> | <Remove Decision>>
- * <Install Decision> ::= *(<PRID> <EPD>)
- * <Remove Decision> ::= *(<PRID> | <PPRID>)
- *
- * Very important, this is actually being treated like this:
- * <Install Decision> ::= <PRID> | <EPD>
- * <Remove Decision> ::= <PRID> | <PPRID>
- *
- */
final Map<COPSContext, Set<COPSDecision>> decisionMap = new HashMap<>();
// Common Header with the same ClientType as the request
// Client Handle with the same clientHandle as the request
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, new COPSHandle(getClientHandle().getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, _handle, decisionMap, null, null);
//** Send the decision
- //**
try {
decisionMsg.writeData(_sock);
} catch (IOException e) {
*/
public void sendUnsolicitedDecision(final Map<String, String> removeDecs, final Map<String, String> installDecs)
throws COPSPdpException {
- //** Example of an UNSOLICITED decision
- //**
-
- /* <Decision Message> ::= <Common Header: Flag UNSOLICITED>
- * <Client Handle>
- * *(<Decision>) | <Error>
- * [<Integrity>]
- * <Decision> ::= <Context>
- * <Decision: Flags>
- * [<Named Decision Data: Provisioning>]
- * <Decision: Flags> ::= <Command-Code> NULLFlag
- * <Command-Code> ::= NULLDecision | Install | Remove
- * <Named Decision Data> ::= <<Install Decision> | <Remove Decision>>
- * <Install Decision> ::= *(<PRID> <EPD>)
- * <Remove Decision> ::= *(<PRID> | <PPRID>)
- *
- * Very important, this is actually being treated like this:
- * <Install Decision> ::= <PRID> | <EPD>
- * <Remove Decision> ::= <PRID> | <PPRID>
- *
- */
-
// Common Header with the same ClientType as the request
// Client Handle with the same clientHandle as the request
final Map<COPSContext, Set<COPSDecision>> decisionMap = new HashMap<>();
decisionMsg.add(intr);
/**/
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, new COPSHandle(getClientHandle().getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, _handle, decisionMap, null, null);
//** Send the decision
- //**
try {
decisionMsg.writeData(_sock);
} catch (IOException e) {
* @throws COPSPdpException
*/
public void sendDeleteRequestState() throws COPSPdpException {
- /* <Decision Message> ::= <Common Header: Flag UNSOLICITED>
- * <Client Handle>
- * *(<Decision>)
- * [<Integrity>]
- * <Decision> ::= <Context>
- * <Decision: Flags>
- * <Decision: Flags> ::= Remove Request-State
- *
- */
-
- // Decisions
- // <Context>
- // <Decision: Flags>
final COPSDecision dec = new COPSDecision(Command.REMOVE, DecisionFlag.REQSTATE);
final Map<COPSContext, Set<COPSDecision>> decisionMap = new HashMap<>();
final Set<COPSDecision> decisionSet = new HashSet<>();
decisionSet.add(dec);
decisionMap.put(new COPSContext(RType.CONFIG, (short)0), decisionSet);
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), new COPSHandle(_handle.getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(getClientType(), _handle, decisionMap, null, null);
try {
decisionMsg.writeData(_sock);
} catch (IOException e) {
* Sends a request asking that a new request state be created
* @throws COPSPdpException
*/
- public void sendOpenNewRequestState()
- throws COPSPdpException {
- /* <Decision Message> ::= <Common Header: Flag UNSOLICITED>
- * <Client Handle>
- * *(<Decision>)
- * [<Integrity>]
- * <Decision> ::= <Context>
- * <Decision: Flags>
- * <Decision: Flags> ::= Install Request-State
- *
- */
-
- // <Decision: Flags>
+ public void sendOpenNewRequestState() throws COPSPdpException {
final COPSDecision dec = new COPSDecision(Command.INSTALL, DecisionFlag.REQSTATE);
final Map<COPSContext, Set<COPSDecision>> decisionMap = new HashMap<>();
final Set<COPSDecision> decisionSet = new HashSet<>();
decisionSet.add(dec);
decisionMap.put(new COPSContext(RType.CONFIG, (short)0), decisionSet);
- final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, new COPSHandle(_handle.getId()),
- decisionMap, null, null);
+ final COPSDecisionMsg decisionMsg = new COPSDecisionMsg(_clientType, _handle, decisionMap, null, null);
try {
decisionMsg.writeData(_sock);
* Sends a message asking for a COPS sync operation
* @throws COPSPdpException
*/
- public void sendSyncRequestState()
- throws COPSPdpException {
- /* <Synchronize State Request> ::= <Common Header>
- * [<Client Handle>]
- * [<Integrity>]
- */
-
- final COPSSyncStateMsg msg = new COPSSyncStateMsg(_clientType, new COPSHandle(_handle.getId()), null);
+ public void sendSyncRequestState() throws COPSPdpException {
+ final COPSSyncStateMsg msg = new COPSSyncStateMsg(_clientType, _handle, null);
try {
msg.writeData(_sock);
} catch (IOException e) {
package org.umu.cops.prpep;
+import org.umu.cops.COPSMsgSender;
import org.umu.cops.stack.*;
import org.umu.cops.stack.COPSClientSI.CSIType;
import org.umu.cops.stack.COPSContext.RType;
* @version COPSPepMsgSender.java, v 2.00 2004
*
*/
-public class COPSPepMsgSender {
-
- /**
- * Socket connection to PDP
- */
- protected Socket _sock;
-
- /**
- * The client-type identifies the policy client
- */
- protected short _clientType;
-
- /**
- * The client handle is used to uniquely identify a particular
- * PEP's request for a client-type
- */
- protected COPSHandle _handle;
+public class COPSPepMsgSender extends COPSMsgSender {
/**
* Create a COPSPepMsgSender
* @param clientHandle client handle
* @param sock socket of PDP connection
*/
- public COPSPepMsgSender (short clientType, COPSHandle clientHandle, Socket sock) {
- // COPS Handle
- _handle = clientHandle;
- _clientType = clientType;
-
- _sock = sock;
- }
-
- /**
- * Return client handle
- *
- * @return a COPSHandle
- *
- */
- public COPSHandle getClientHandle() {
- return _handle;
- }
-
- /**
- * Return client-type
- *
- * @return a short
- *
- */
- public int getClientType() {
- return _clientType;
+ public COPSPepMsgSender(short clientType, COPSHandle clientHandle, Socket sock) {
+ super(clientType, clientHandle, sock);
}
/**