store the long and excl flags in the connection state
This commit is contained in:
@@ -309,6 +309,8 @@ METHOD(imc_agent_t, create_state, TNC_Result,
|
|||||||
t_p = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_PROTOCOL);
|
t_p = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_PROTOCOL);
|
||||||
t_v = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_VERSION);
|
t_v = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_VERSION);
|
||||||
|
|
||||||
|
state->set_flags(state, has_long, has_excl);
|
||||||
|
|
||||||
DBG2(DBG_IMC, "IMC %u \"%s\" created a state for Connection ID %u: "
|
DBG2(DBG_IMC, "IMC %u \"%s\" created a state for Connection ID %u: "
|
||||||
"%s %s with %slong %sexcl %ssoh over %s %s",
|
"%s %s with %slong %sexcl %ssoh over %s %s",
|
||||||
this->id, this->name, conn_id, tnccs_p ? tnccs_p:"?",
|
this->id, this->name, conn_id, tnccs_p ? tnccs_p:"?",
|
||||||
|
|||||||
@@ -33,12 +33,36 @@ typedef struct imc_state_t imc_state_t;
|
|||||||
struct imc_state_t {
|
struct imc_state_t {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the TNCS connection ID attached to the state
|
* Get the TNCS connection I
|
||||||
|
D attached to the state
|
||||||
*
|
*
|
||||||
* @return TNCS connection ID of the state
|
* @return TNCS connection ID of the state
|
||||||
*/
|
*/
|
||||||
TNC_ConnectionID (*get_connection_id)(imc_state_t *this);
|
TNC_ConnectionID (*get_connection_id)(imc_state_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if long message types are supported for this TNCCS connection
|
||||||
|
*
|
||||||
|
* @return TRUE if set, FALSE otherwise
|
||||||
|
*/
|
||||||
|
bool (*has_long)(imc_state_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the exclusive delivery is supported for this TNCCS connection
|
||||||
|
*
|
||||||
|
* @return TRUE if set, FALSE otherwise
|
||||||
|
*/
|
||||||
|
bool (*has_excl)(imc_state_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the long message types and exclusive flags for this TNCCS connection
|
||||||
|
*
|
||||||
|
* @param has_long TNCCS connection supports long message types
|
||||||
|
* @param has_excl TNCCS connection supports exclusive delivery
|
||||||
|
* @return TRUE if set, FALSE otherwise
|
||||||
|
*/
|
||||||
|
void (*set_flags)(imc_state_t *this, bool has_long, bool has_excl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change the connection state
|
* Change the connection state
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -328,6 +328,8 @@ METHOD(imv_agent_t, create_state, TNC_Result,
|
|||||||
t_p = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_PROTOCOL);
|
t_p = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_PROTOCOL);
|
||||||
t_v = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_VERSION);
|
t_v = get_str_attribute(this, conn_id, TNC_ATTRIBUTEID_IFT_VERSION);
|
||||||
|
|
||||||
|
state->set_flags(state, has_long, has_excl);
|
||||||
|
|
||||||
DBG2(DBG_IMV, "IMV %u \"%s\" created a state for Connection ID %u: "
|
DBG2(DBG_IMV, "IMV %u \"%s\" created a state for Connection ID %u: "
|
||||||
"%s %s with %slong %sexcl %ssoh over %s %s",
|
"%s %s with %slong %sexcl %ssoh over %s %s",
|
||||||
this->id, this->name, conn_id, tnccs_p ? tnccs_p:"?",
|
this->id, this->name, conn_id, tnccs_p ? tnccs_p:"?",
|
||||||
|
|||||||
@@ -39,6 +39,29 @@ struct imv_state_t {
|
|||||||
*/
|
*/
|
||||||
TNC_ConnectionID (*get_connection_id)(imv_state_t *this);
|
TNC_ConnectionID (*get_connection_id)(imv_state_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if long message types are supported for this TNCCS connection
|
||||||
|
*
|
||||||
|
* @return TRUE if set, FALSE otherwise
|
||||||
|
*/
|
||||||
|
bool (*has_long)(imv_state_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the exclusive delivery is supported for this TNCCS connection
|
||||||
|
*
|
||||||
|
* @return TRUE if set, FALSE otherwise
|
||||||
|
*/
|
||||||
|
bool (*has_excl)(imv_state_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the long message types and exclusive flags for this TNCCS connection
|
||||||
|
*
|
||||||
|
* @param has_long TNCCS connection supports long message types
|
||||||
|
* @param has_excl TNCCS connection supports exclusive delivery
|
||||||
|
* @return TRUE if set, FALSE otherwise
|
||||||
|
*/
|
||||||
|
void (*set_flags)(imv_state_t *this, bool has_long, bool has_excl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change the connection state
|
* Change the connection state
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -37,6 +37,17 @@ struct private_imc_scanner_state_t {
|
|||||||
* TNCCS connection state
|
* TNCCS connection state
|
||||||
*/
|
*/
|
||||||
TNC_ConnectionState state;
|
TNC_ConnectionState state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support long message types?
|
||||||
|
*/
|
||||||
|
bool has_long;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support exclusive delivery?
|
||||||
|
*/
|
||||||
|
bool has_excl;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
METHOD(imc_state_t, get_connection_id, TNC_ConnectionID,
|
METHOD(imc_state_t, get_connection_id, TNC_ConnectionID,
|
||||||
@@ -45,6 +56,25 @@ METHOD(imc_state_t, get_connection_id, TNC_ConnectionID,
|
|||||||
return this->connection_id;
|
return this->connection_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, has_long, bool,
|
||||||
|
private_imc_scanner_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_long;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, has_excl, bool,
|
||||||
|
private_imc_scanner_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, set_flags, void,
|
||||||
|
private_imc_scanner_state_t *this, bool has_long, bool has_excl)
|
||||||
|
{
|
||||||
|
this->has_long = has_long;
|
||||||
|
this->has_excl = has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(imc_state_t, change_state, void,
|
METHOD(imc_state_t, change_state, void,
|
||||||
private_imc_scanner_state_t *this, TNC_ConnectionState new_state)
|
private_imc_scanner_state_t *this, TNC_ConnectionState new_state)
|
||||||
{
|
{
|
||||||
@@ -68,6 +98,9 @@ imc_state_t *imc_scanner_state_create(TNC_ConnectionID connection_id)
|
|||||||
.public = {
|
.public = {
|
||||||
.interface = {
|
.interface = {
|
||||||
.get_connection_id = _get_connection_id,
|
.get_connection_id = _get_connection_id,
|
||||||
|
.has_long = _has_long,
|
||||||
|
.has_excl = _has_excl,
|
||||||
|
.set_flags = _set_flags,
|
||||||
.change_state = _change_state,
|
.change_state = _change_state,
|
||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -38,6 +38,16 @@ struct private_imc_test_state_t {
|
|||||||
*/
|
*/
|
||||||
TNC_ConnectionState state;
|
TNC_ConnectionState state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support long message types?
|
||||||
|
*/
|
||||||
|
bool has_long;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support exclusive delivery?
|
||||||
|
*/
|
||||||
|
bool has_excl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command to transmit to IMV
|
* Command to transmit to IMV
|
||||||
*/
|
*/
|
||||||
@@ -60,6 +70,25 @@ METHOD(imc_state_t, get_connection_id, TNC_ConnectionID,
|
|||||||
return this->connection_id;
|
return this->connection_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, has_long, bool,
|
||||||
|
private_imc_test_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_long;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, has_excl, bool,
|
||||||
|
private_imc_test_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, set_flags, void,
|
||||||
|
private_imc_test_state_t *this, bool has_long, bool has_excl)
|
||||||
|
{
|
||||||
|
this->has_long = has_long;
|
||||||
|
this->has_excl = has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(imc_state_t, change_state, void,
|
METHOD(imc_state_t, change_state, void,
|
||||||
private_imc_test_state_t *this, TNC_ConnectionState new_state)
|
private_imc_test_state_t *this, TNC_ConnectionState new_state)
|
||||||
{
|
{
|
||||||
@@ -123,6 +152,9 @@ imc_state_t *imc_test_state_create(TNC_ConnectionID connection_id,
|
|||||||
.public = {
|
.public = {
|
||||||
.interface = {
|
.interface = {
|
||||||
.get_connection_id = _get_connection_id,
|
.get_connection_id = _get_connection_id,
|
||||||
|
.has_long = _has_long,
|
||||||
|
.has_excl = _has_excl,
|
||||||
|
.set_flags = _set_flags,
|
||||||
.change_state = _change_state,
|
.change_state = _change_state,
|
||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -39,6 +39,16 @@ struct private_imv_scanner_state_t {
|
|||||||
*/
|
*/
|
||||||
TNC_ConnectionState state;
|
TNC_ConnectionState state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support long message types?
|
||||||
|
*/
|
||||||
|
bool has_long;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support exclusive delivery?
|
||||||
|
*/
|
||||||
|
bool has_excl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IMV action recommendation
|
* IMV action recommendation
|
||||||
*/
|
*/
|
||||||
@@ -86,6 +96,25 @@ METHOD(imv_state_t, get_connection_id, TNC_ConnectionID,
|
|||||||
return this->connection_id;
|
return this->connection_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, has_long, bool,
|
||||||
|
private_imv_scanner_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_long;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, has_excl, bool,
|
||||||
|
private_imv_scanner_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, set_flags, void,
|
||||||
|
private_imv_scanner_state_t *this, bool has_long, bool has_excl)
|
||||||
|
{
|
||||||
|
this->has_long = has_long;
|
||||||
|
this->has_excl = has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(imv_state_t, change_state, void,
|
METHOD(imv_state_t, change_state, void,
|
||||||
private_imv_scanner_state_t *this, TNC_ConnectionState new_state)
|
private_imv_scanner_state_t *this, TNC_ConnectionState new_state)
|
||||||
{
|
{
|
||||||
@@ -191,6 +220,9 @@ imv_state_t *imv_scanner_state_create(TNC_ConnectionID connection_id)
|
|||||||
.public = {
|
.public = {
|
||||||
.interface = {
|
.interface = {
|
||||||
.get_connection_id = _get_connection_id,
|
.get_connection_id = _get_connection_id,
|
||||||
|
.has_long = _has_long,
|
||||||
|
.has_excl = _has_excl,
|
||||||
|
.set_flags = _set_flags,
|
||||||
.change_state = _change_state,
|
.change_state = _change_state,
|
||||||
.get_recommendation = _get_recommendation,
|
.get_recommendation = _get_recommendation,
|
||||||
.set_recommendation = _set_recommendation,
|
.set_recommendation = _set_recommendation,
|
||||||
|
|||||||
@@ -39,6 +39,16 @@ struct private_imv_test_state_t {
|
|||||||
*/
|
*/
|
||||||
TNC_ConnectionState state;
|
TNC_ConnectionState state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support long message types?
|
||||||
|
*/
|
||||||
|
bool has_long;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support exclusive delivery?
|
||||||
|
*/
|
||||||
|
bool has_excl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IMV action recommendation
|
* IMV action recommendation
|
||||||
*/
|
*/
|
||||||
@@ -82,6 +92,25 @@ METHOD(imv_state_t, get_connection_id, TNC_ConnectionID,
|
|||||||
return this->connection_id;
|
return this->connection_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, has_long, bool,
|
||||||
|
private_imv_test_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_long;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, has_excl, bool,
|
||||||
|
private_imv_test_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, set_flags, void,
|
||||||
|
private_imv_test_state_t *this, bool has_long, bool has_excl)
|
||||||
|
{
|
||||||
|
this->has_long = has_long;
|
||||||
|
this->has_excl = has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(imv_state_t, change_state, void,
|
METHOD(imv_state_t, change_state, void,
|
||||||
private_imv_test_state_t *this, TNC_ConnectionState new_state)
|
private_imv_test_state_t *this, TNC_ConnectionState new_state)
|
||||||
{
|
{
|
||||||
@@ -177,6 +206,9 @@ imv_state_t *imv_test_state_create(TNC_ConnectionID connection_id)
|
|||||||
.public = {
|
.public = {
|
||||||
.interface = {
|
.interface = {
|
||||||
.get_connection_id = _get_connection_id,
|
.get_connection_id = _get_connection_id,
|
||||||
|
.has_long = _has_long,
|
||||||
|
.has_excl = _has_excl,
|
||||||
|
.set_flags = _set_flags,
|
||||||
.change_state = _change_state,
|
.change_state = _change_state,
|
||||||
.get_recommendation = _get_recommendation,
|
.get_recommendation = _get_recommendation,
|
||||||
.set_recommendation = _set_recommendation,
|
.set_recommendation = _set_recommendation,
|
||||||
|
|||||||
@@ -40,6 +40,16 @@ struct private_imc_attestation_state_t {
|
|||||||
*/
|
*/
|
||||||
TNC_ConnectionState state;
|
TNC_ConnectionState state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support long message types?
|
||||||
|
*/
|
||||||
|
bool has_long;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support exclusive delivery?
|
||||||
|
*/
|
||||||
|
bool has_excl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PTS object
|
* PTS object
|
||||||
*/
|
*/
|
||||||
@@ -58,6 +68,25 @@ METHOD(imc_state_t, get_connection_id, TNC_ConnectionID,
|
|||||||
return this->connection_id;
|
return this->connection_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, has_long, bool,
|
||||||
|
private_imc_attestation_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_long;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, has_excl, bool,
|
||||||
|
private_imc_attestation_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imc_state_t, set_flags, void,
|
||||||
|
private_imc_attestation_state_t *this, bool has_long, bool has_excl)
|
||||||
|
{
|
||||||
|
this->has_long = has_long;
|
||||||
|
this->has_excl = has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(imc_state_t, change_state, void,
|
METHOD(imc_state_t, change_state, void,
|
||||||
private_imc_attestation_state_t *this, TNC_ConnectionState new_state)
|
private_imc_attestation_state_t *this, TNC_ConnectionState new_state)
|
||||||
{
|
{
|
||||||
@@ -103,6 +132,9 @@ imc_state_t *imc_attestation_state_create(TNC_ConnectionID connection_id)
|
|||||||
.public = {
|
.public = {
|
||||||
.interface = {
|
.interface = {
|
||||||
.get_connection_id = _get_connection_id,
|
.get_connection_id = _get_connection_id,
|
||||||
|
.has_long = _has_long,
|
||||||
|
.has_excl = _has_excl,
|
||||||
|
.set_flags = _set_flags,
|
||||||
.change_state = _change_state,
|
.change_state = _change_state,
|
||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -51,6 +51,16 @@ struct private_imv_attestation_state_t {
|
|||||||
*/
|
*/
|
||||||
TNC_ConnectionState state;
|
TNC_ConnectionState state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support long message types?
|
||||||
|
*/
|
||||||
|
bool has_long;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Does the TNCCS connection support exclusive delivery?
|
||||||
|
*/
|
||||||
|
bool has_excl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IMV Attestation handshake state
|
* IMV Attestation handshake state
|
||||||
*/
|
*/
|
||||||
@@ -121,6 +131,25 @@ METHOD(imv_state_t, get_connection_id, TNC_ConnectionID,
|
|||||||
return this->connection_id;
|
return this->connection_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, has_long, bool,
|
||||||
|
private_imv_attestation_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_long;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, has_excl, bool,
|
||||||
|
private_imv_attestation_state_t *this)
|
||||||
|
{
|
||||||
|
return this->has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
|
METHOD(imv_state_t, set_flags, void,
|
||||||
|
private_imv_attestation_state_t *this, bool has_long, bool has_excl)
|
||||||
|
{
|
||||||
|
this->has_long = has_long;
|
||||||
|
this->has_excl = has_excl;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(imv_state_t, change_state, void,
|
METHOD(imv_state_t, change_state, void,
|
||||||
private_imv_attestation_state_t *this, TNC_ConnectionState new_state)
|
private_imv_attestation_state_t *this, TNC_ConnectionState new_state)
|
||||||
{
|
{
|
||||||
@@ -335,6 +364,9 @@ imv_state_t *imv_attestation_state_create(TNC_ConnectionID connection_id)
|
|||||||
.public = {
|
.public = {
|
||||||
.interface = {
|
.interface = {
|
||||||
.get_connection_id = _get_connection_id,
|
.get_connection_id = _get_connection_id,
|
||||||
|
.has_long = _has_long,
|
||||||
|
.has_excl = _has_excl,
|
||||||
|
.set_flags = _set_flags,
|
||||||
.change_state = _change_state,
|
.change_state = _change_state,
|
||||||
.get_recommendation = _get_recommendation,
|
.get_recommendation = _get_recommendation,
|
||||||
.set_recommendation = _set_recommendation,
|
.set_recommendation = _set_recommendation,
|
||||||
|
|||||||
Reference in New Issue
Block a user