summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@ugent.be>2017-02-24 11:32:24 +0100
committerdimitri staessens <dimitri.staessens@ugent.be>2017-02-24 11:34:38 +0100
commit48599a14144725dedc45f7558d814950791d069d (patch)
treef169d40a128459419181cb2d83efe1916a67f5a1
parent41704c2379eda1124c5fc94d5589be6951e5b7ee (diff)
downloadouroboros-48599a14144725dedc45f7558d814950791d069d.tar.gz
ouroboros-48599a14144725dedc45f7558d814950791d069d.zip
Revise CACEP API
The information passed to CACEP is split between the information about the connection and the information to be used during the authentication exchange.
-rw-r--r--include/ouroboros/cacep.h21
-rw-r--r--src/ipcpd/normal/cdap_flow.c24
-rw-r--r--src/ipcpd/normal/cdap_flow.h20
-rw-r--r--src/ipcpd/normal/enroll.c20
-rw-r--r--src/ipcpd/normal/fmgr.c18
-rw-r--r--src/ipcpd/normal/gam.c52
-rw-r--r--src/ipcpd/normal/gam.h8
-rw-r--r--src/ipcpd/normal/pol-gam-ops.h8
-rw-r--r--src/ipcpd/normal/pol/complete.c2
-rw-r--r--src/ipcpd/normal/pol/complete.h6
-rw-r--r--src/lib/cacep.c50
-rw-r--r--src/lib/pol/cacep_anonymous_auth.c40
-rw-r--r--src/lib/pol/cacep_anonymous_auth.h10
-rw-r--r--src/lib/pol/cacep_simple_auth.c39
-rw-r--r--src/lib/pol/cacep_simple_auth.h10
15 files changed, 174 insertions, 154 deletions
diff --git a/include/ouroboros/cacep.h b/include/ouroboros/cacep.h
index e0737c47..f155023e 100644
--- a/include/ouroboros/cacep.h
+++ b/include/ouroboros/cacep.h
@@ -32,7 +32,7 @@ enum proto_concrete_syntax {
PROTO_FIXED
};
-struct cacep_info {
+struct conn_info{
struct {
char * protocol;
uint32_t pref_version;
@@ -40,19 +40,20 @@ struct cacep_info {
} proto;
char * name;
uint64_t addr;
- void * data;
};
-int cacep_info_init(struct cacep_info * info);
+int conn_info_init(struct conn_info * info);
-void cacep_info_fini(struct cacep_info * info);
+void conn_info_fini(struct conn_info * info);
-struct cacep_info * cacep_auth(int fd,
- enum pol_cacep pc,
- const struct cacep_info * info);
+struct conn_info * cacep_auth(int fd,
+ enum pol_cacep pc,
+ const struct conn_info * info,
+ const void * auth);
-struct cacep_info * cacep_auth_wait(int fd,
- enum pol_cacep pc,
- const struct cacep_info * info);
+struct conn_info * cacep_auth_wait(int fd,
+ enum pol_cacep pc,
+ const struct conn_info * info,
+ const void * auth);
#endif /* OUROBOROS_CACEP_H */
diff --git a/src/ipcpd/normal/cdap_flow.c b/src/ipcpd/normal/cdap_flow.c
index a94627c2..71ebcc03 100644
--- a/src/ipcpd/normal/cdap_flow.c
+++ b/src/ipcpd/normal/cdap_flow.c
@@ -38,17 +38,17 @@ static void cdap_flow_destroy(struct cdap_flow * flow)
if (flow->ci != NULL)
cdap_destroy(flow->ci);
if (flow->info != NULL) {
- cacep_info_fini(flow->info);
+ conn_info_fini(flow->info);
free(flow->info);
}
free(flow);
}
-struct cdap_flow * cdap_flow_arr(int fd,
- int resp,
- enum pol_cacep pc,
- const struct cacep_info * info)
+struct cdap_flow * cdap_flow_arr(int fd,
+ int resp,
+ enum pol_cacep pc,
+ const struct conn_info * info)
{
struct cdap_flow * flow;
@@ -69,7 +69,7 @@ struct cdap_flow * cdap_flow_arr(int fd,
flow->fd = fd;
flow->ci = NULL;
- flow->info = cacep_auth_wait(fd, pc, info);
+ flow->info = cacep_auth_wait(fd, pc, info, NULL);
if (flow->info == NULL) {
log_err("Other side failed to authenticate.");
cdap_flow_destroy(flow);
@@ -86,11 +86,11 @@ struct cdap_flow * cdap_flow_arr(int fd,
return flow;
}
-struct cdap_flow * cdap_flow_alloc(const char * dst_name,
- const char * ae_name,
- qosspec_t * qs,
- enum pol_cacep pc,
- const struct cacep_info * info)
+struct cdap_flow * cdap_flow_alloc(const char * dst_name,
+ const char * ae_name,
+ qosspec_t * qs,
+ enum pol_cacep pc,
+ const struct conn_info * info)
{
struct cdap_flow * flow;
int fd;
@@ -123,7 +123,7 @@ struct cdap_flow * cdap_flow_alloc(const char * dst_name,
flow->fd = fd;
flow->ci = NULL;
- flow->info = cacep_auth(fd, pc, info);
+ flow->info = cacep_auth(fd, pc, info, NULL);
if (flow->info == NULL) {
log_err("Failed to authenticate.");
cdap_flow_dealloc(flow);
diff --git a/src/ipcpd/normal/cdap_flow.h b/src/ipcpd/normal/cdap_flow.h
index c5ca2ab4..14a04f02 100644
--- a/src/ipcpd/normal/cdap_flow.h
+++ b/src/ipcpd/normal/cdap_flow.h
@@ -30,19 +30,19 @@
struct cdap_flow {
int fd;
struct cdap * ci;
- struct cacep_info * info;
+ struct conn_info * info;
};
-struct cdap_flow * cdap_flow_arr(int fd,
- int resp,
- enum pol_cacep pc,
- const struct cacep_info * info);
+struct cdap_flow * cdap_flow_arr(int fd,
+ int resp,
+ enum pol_cacep pc,
+ const struct conn_info * info);
-struct cdap_flow * cdap_flow_alloc(const char * dst_name,
- const char * ae_name,
- qosspec_t * qs,
- enum pol_cacep pc,
- const struct cacep_info * info);
+struct cdap_flow * cdap_flow_alloc(const char * dst_name,
+ const char * ae_name,
+ qosspec_t * qs,
+ enum pol_cacep pc,
+ const struct conn_info * info);
void cdap_flow_dealloc(struct cdap_flow * flow);
diff --git a/src/ipcpd/normal/enroll.c b/src/ipcpd/normal/enroll.c
index ce6768fb..78bc4d51 100644
--- a/src/ipcpd/normal/enroll.c
+++ b/src/ipcpd/normal/enroll.c
@@ -44,7 +44,7 @@
int enroll_handle(int fd)
{
struct cdap_flow * flow;
- struct cacep_info info;
+ struct conn_info info;
cdap_key_t key;
enum cdap_opcode oc;
char * name;
@@ -61,11 +61,11 @@ int enroll_handle(int fd)
char * members_ro = MEMBERS_PATH;
char * dif_ro = DIF_PATH;
- cacep_info_init(&info);
+ conn_info_init(&info);
info.proto.protocol = strdup(CDAP_PROTO);
if (info.proto.protocol == NULL) {
- cacep_info_fini(&info);
+ conn_info_fini(&info);
return -ENOMEM;
}
@@ -75,12 +75,12 @@ int enroll_handle(int fd)
flow = cdap_flow_arr(fd, 0, ANONYMOUS_AUTH, &info);
if (flow == NULL) {
log_err("Failed to auth enrollment request.");
- cacep_info_fini(&info);
+ conn_info_fini(&info);
flow_dealloc(fd);
return -1;
}
- cacep_info_fini(&info);
+ conn_info_fini(&info);
while (!(boot_r && members_r && dif_name_r)) {
key = cdap_request_wait(flow->ci, &oc, &name, &data,
@@ -156,7 +156,7 @@ int enroll_handle(int fd)
int enroll_boot(char * dst_name)
{
struct cdap_flow * flow;
- struct cacep_info info;
+ struct conn_info info;
cdap_key_t key;
uint8_t * data;
size_t len;
@@ -170,11 +170,11 @@ int enroll_boot(char * dst_name)
char * members_ro = MEMBERS_PATH;
char * dif_ro = DIF_PATH;
- cacep_info_init(&info);
+ conn_info_init(&info);
info.proto.protocol = strdup(CDAP_PROTO);
if (info.proto.protocol == NULL) {
- cacep_info_fini(&info);
+ conn_info_fini(&info);
return -ENOMEM;
}
@@ -185,11 +185,11 @@ int enroll_boot(char * dst_name)
&info);
if (flow == NULL) {
log_err("Failed to allocate flow for enrollment request.");
- cacep_info_fini(&info);
+ conn_info_fini(&info);
return -1;
}
- cacep_info_fini(&info);
+ conn_info_fini(&info);
log_dbg("Getting boot information from %s.", dst_name);
diff --git a/src/ipcpd/normal/fmgr.c b/src/ipcpd/normal/fmgr.c
index c2b53abf..74bdda88 100644
--- a/src/ipcpd/normal/fmgr.c
+++ b/src/ipcpd/normal/fmgr.c
@@ -49,10 +49,10 @@ typedef FlowAllocMsg flow_alloc_msg_t;
#define FD_UPDATE_TIMEOUT 100000 /* nanoseconds */
struct nm1_flow {
- struct list_head next;
- int fd;
- qosspec_t qs;
- struct cacep_info * info;
+ struct list_head next;
+ int fd;
+ qosspec_t qs;
+ struct conn_info * info;
};
struct {
@@ -194,11 +194,11 @@ void * fmgr_nm1_sdu_reader(void * o)
static void * fmgr_nm1_flow_wait(void * o)
{
- qoscube_t cube;
- struct cacep_info * info;
- int fd;
- qosspec_t qs;
- struct nm1_flow * flow;
+ qoscube_t cube;
+ struct conn_info * info;
+ int fd;
+ qosspec_t qs;
+ struct nm1_flow * flow;
(void) o;
diff --git a/src/ipcpd/normal/gam.c b/src/ipcpd/normal/gam.c
index 791cf34e..02df0be7 100644
--- a/src/ipcpd/normal/gam.c
+++ b/src/ipcpd/normal/gam.c
@@ -45,7 +45,7 @@ struct ga {
qosspec_t qs;
int fd;
- struct cacep_info * info;
+ struct conn_info * info;
};
struct gam {
@@ -148,10 +148,10 @@ void gam_destroy(struct gam * instance)
free(instance);
}
-static int add_ga(struct gam * instance,
- int fd,
- qosspec_t qs,
- struct cacep_info * info)
+static int add_ga(struct gam * instance,
+ int fd,
+ qosspec_t qs,
+ struct conn_info * info)
{
struct ga * ga;
@@ -179,8 +179,8 @@ int gam_flow_arr(struct gam * instance,
int fd,
qosspec_t qs)
{
- struct cacep_info * rcv_info;
- struct cacep_info snd_info;
+ struct conn_info * rcv_info;
+ struct conn_info snd_info;
if (flow_alloc_resp(fd, instance->ops->accept_new_flow(instance->ops_o))
< 0) {
@@ -188,10 +188,10 @@ int gam_flow_arr(struct gam * instance,
return -1;
}
- cacep_info_init(&snd_info);
+ conn_info_init(&snd_info);
snd_info.proto.protocol = strdup(CDAP_PROTO);
if (snd_info.proto.protocol == NULL) {
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
return -ENOMEM;
}
@@ -200,22 +200,22 @@ int gam_flow_arr(struct gam * instance,
snd_info.addr = ipcpi.address;
snd_info.name = strdup(ipcpi.name);
if (snd_info.name == NULL) {
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
return -ENOMEM;
}
- rcv_info = cacep_auth_wait(fd, SIMPLE_AUTH, &snd_info);
+ rcv_info = cacep_auth_wait(fd, SIMPLE_AUTH, &snd_info, NULL);
if (rcv_info == NULL) {
log_err("Other side failed to authenticate.");
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
return -1;
}
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
if (instance->ops->accept_flow(instance->ops_o, qs, rcv_info)) {
flow_dealloc(fd);
- cacep_info_fini(rcv_info);
+ conn_info_fini(rcv_info);
free(rcv_info);
return 0;
}
@@ -223,7 +223,7 @@ int gam_flow_arr(struct gam * instance,
if (add_ga(instance, fd, qs, rcv_info)) {
log_err("Failed to add ga to graph adjacency manager list.");
flow_dealloc(fd);
- cacep_info_fini(rcv_info);
+ conn_info_fini(rcv_info);
free(rcv_info);
return -1;
}
@@ -235,8 +235,8 @@ int gam_flow_alloc(struct gam * instance,
char * dst_name,
qosspec_t qs)
{
- struct cacep_info * rcv_info;
- struct cacep_info snd_info;
+ struct conn_info * rcv_info;
+ struct conn_info snd_info;
int fd;
log_dbg("Allocating flow to %s.", dst_name);
@@ -253,10 +253,10 @@ int gam_flow_alloc(struct gam * instance,
return -1;
}
- cacep_info_init(&snd_info);
+ conn_info_init(&snd_info);
snd_info.proto.protocol = strdup(CDAP_PROTO);
if (snd_info.proto.protocol == NULL) {
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
return -ENOMEM;
}
@@ -265,22 +265,22 @@ int gam_flow_alloc(struct gam * instance,
snd_info.addr = ipcpi.address;
snd_info.name = strdup(ipcpi.name);
if (snd_info.name == NULL) {
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
return -ENOMEM;
}
- rcv_info = cacep_auth(fd, SIMPLE_AUTH, &snd_info);
+ rcv_info = cacep_auth(fd, SIMPLE_AUTH, &snd_info, NULL);
if (rcv_info == NULL) {
log_err("Other side failed to authenticate.");
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
return -1;
}
- cacep_info_fini(&snd_info);
+ conn_info_fini(&snd_info);
if (instance->ops->accept_flow(instance->ops_o, qs, rcv_info)) {
flow_dealloc(fd);
- cacep_info_fini(rcv_info);
+ conn_info_fini(rcv_info);
free(rcv_info);
return 0;
}
@@ -288,7 +288,7 @@ int gam_flow_alloc(struct gam * instance,
if (add_ga(instance, fd, qs, rcv_info)) {
log_err("Failed to add GA to graph adjacency manager list.");
flow_dealloc(fd);
- cacep_info_fini(rcv_info);
+ conn_info_fini(rcv_info);
free(rcv_info);
return -1;
}
@@ -298,7 +298,7 @@ int gam_flow_alloc(struct gam * instance,
int gam_flow_wait(struct gam * instance,
int * fd,
- struct cacep_info ** info,
+ struct conn_info ** info,
qosspec_t * qs)
{
struct ga * ga;
diff --git a/src/ipcpd/normal/gam.h b/src/ipcpd/normal/gam.h
index 50f83df9..e4832ca6 100644
--- a/src/ipcpd/normal/gam.h
+++ b/src/ipcpd/normal/gam.h
@@ -39,9 +39,9 @@ int gam_flow_alloc(struct gam * instance,
char * dst_name,
qosspec_t qs);
-int gam_flow_wait(struct gam * instance,
- int * fd,
- struct cacep_info ** info,
- qosspec_t * qs);
+int gam_flow_wait(struct gam * instance,
+ int * fd,
+ struct conn_info ** info,
+ qosspec_t * qs);
#endif /* OUROBOROS_IPCPD_NORMAL_GAM_H */
diff --git a/src/ipcpd/normal/pol-gam-ops.h b/src/ipcpd/normal/pol-gam-ops.h
index 0721136c..6983e3a0 100644
--- a/src/ipcpd/normal/pol-gam-ops.h
+++ b/src/ipcpd/normal/pol-gam-ops.h
@@ -23,7 +23,7 @@
#ifndef OUROBOROS_IPCPD_NORMAL_POL_GAM_OPS_H
#define OUROBOROS_IPCPD_NORMAL_POL_GAM_OPS_H
-#include <ouroboros/cacep.h>
+#include "conn.h"
struct pol_gam_ops {
void * (* create)(struct gam * instance);
@@ -36,9 +36,9 @@ struct pol_gam_ops {
int (* accept_new_flow)(void * o);
- int (* accept_flow)(void * o,
- qosspec_t qs,
- const struct cacep_info * info);
+ int (* accept_flow)(void * o,
+ qosspec_t qs,
+ const struct conn_info * info);
};
#endif /* OUROBOROS_IPCPD_NORMAL_POL_GAM_OPS_H */
diff --git a/src/ipcpd/normal/pol/complete.c b/src/ipcpd/normal/pol/complete.c
index 5faa1ae8..1d4811d2 100644
--- a/src/ipcpd/normal/pol/complete.c
+++ b/src/ipcpd/normal/pol/complete.c
@@ -153,7 +153,7 @@ int complete_accept_new_flow(void * o)
int complete_accept_flow(void * o,
qosspec_t qs,
- const struct cacep_info * info)
+ const struct conn_info * info)
{
struct list_head * pos = NULL;
struct neighbor * n;
diff --git a/src/ipcpd/normal/pol/complete.h b/src/ipcpd/normal/pol/complete.h
index 3f08c2e5..8fe1437f 100644
--- a/src/ipcpd/normal/pol/complete.h
+++ b/src/ipcpd/normal/pol/complete.h
@@ -36,9 +36,9 @@ int complete_stop(void * o);
int complete_accept_new_flow(void * o);
-int complete_accept_flow(void * o,
- qosspec_t qs,
- const struct cacep_info * info);
+int complete_accept_flow(void * o,
+ qosspec_t qs,
+ const struct conn_info * info);
struct pol_gam_ops complete_ops = {
.create = complete_create,
diff --git a/src/lib/cacep.c b/src/lib/cacep.c
index 92c028af..89bd05e7 100644
--- a/src/lib/cacep.c
+++ b/src/lib/cacep.c
@@ -28,42 +28,45 @@
#include <ouroboros/errno.h>
#include <ouroboros/logs.h>
-#include <pol/cacep_anonymous_auth.h>
-#include <pol/cacep_simple_auth.h>
+#include "pol/cacep_anonymous_auth.h"
+#include "pol/cacep_simple_auth.h"
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 2048
-int cacep_info_init(struct cacep_info * info)
+int conn_info_init(struct conn_info * info)
{
if (info == NULL)
return -EINVAL;
info->proto.protocol = NULL;
- info->name = NULL;
- info->data = NULL;
+ info->name = NULL;
return 0;
}
-void cacep_info_fini(struct cacep_info * info)
+void conn_info_fini(struct conn_info * info)
{
- if (info->proto.protocol != NULL)
+ if (info == NULL)
+ return;
+
+ if (info->proto.protocol != NULL) {
free(info->proto.protocol);
- if (info->name != NULL)
- free(info->name);
- if (info->data != NULL)
- free(info->data);
+ info->proto.protocol = NULL;
+ }
- info->name = NULL;
- info->data = NULL;
+ if (info->name != NULL) {
+ free(info->name);
+ info->name = NULL;
+ }
}
-struct cacep_info * cacep_auth(int fd,
- enum pol_cacep pc,
- const struct cacep_info * info)
+struct conn_info * cacep_auth(int fd,
+ enum pol_cacep pc,
+ const struct conn_info * info,
+ const void * auth)
{
if (info == NULL) {
log_err("No info provided.");
@@ -72,20 +75,21 @@ struct cacep_info * cacep_auth(int fd,
switch (pc) {
case ANONYMOUS_AUTH:
- return cacep_anonymous_auth(fd, info);
+ return cacep_anonymous_auth(fd, info, auth);
case SIMPLE_AUTH:
if (info == NULL)
return NULL;
- return cacep_simple_auth_auth(fd, info);
+ return cacep_simple_auth_auth(fd, info, auth);
default:
log_err("Unsupported CACEP policy.");
return NULL;
}
}
-struct cacep_info * cacep_auth_wait(int fd,
- enum pol_cacep pc,
- const struct cacep_info * info)
+struct conn_info * cacep_auth_wait(int fd,
+ enum pol_cacep pc,
+ const struct conn_info * info,
+ const void * auth)
{
if (info == NULL) {
log_err("No info provided.");
@@ -94,11 +98,11 @@ struct cacep_info * cacep_auth_wait(int fd,
switch (pc) {
case ANONYMOUS_AUTH:
- return cacep_anonymous_auth_wait(fd, info);
+ return cacep_anonymous_auth_wait(fd, info, auth);
case SIMPLE_AUTH:
if (info == NULL)
return NULL;
- return cacep_simple_auth_auth_wait(fd, info);
+ return cacep_simple_auth_auth_wait(fd, info, auth);
default:
log_err("Unsupported CACEP policy.");
return NULL;
diff --git a/src/lib/pol/cacep_anonymous_auth.c b/src/lib/pol/cacep_anonymous_auth.c
index 1fcc730a..44c7bd17 100644
--- a/src/lib/pol/cacep_anonymous_auth.c
+++ b/src/lib/pol/cacep_anonymous_auth.c
@@ -43,16 +43,16 @@ typedef CacepProtoMsg cacep_proto_msg_t;
#define NAME_LEN 8
/* this policy generates a hex string */
-static struct cacep_info * anonymous_info(void)
+static struct conn_info * anonymous_info(void)
{
- struct cacep_info * info;
+ struct conn_info * info;
struct timespec t;
info = malloc(sizeof(*info));
if (info == NULL)
return NULL;
- cacep_info_init(info);
+ conn_info_init(info);
info->name = malloc(NAME_LEN + 1);
if (info->name == NULL) {
@@ -71,9 +71,9 @@ static struct cacep_info * anonymous_info(void)
return info;
}
-static struct cacep_info * read_msg(int fd)
+static struct conn_info * read_msg(int fd)
{
- struct cacep_info * tmp;
+ struct conn_info * tmp;
uint8_t buf[BUF_SIZE];
cacep_anonymous_auth_msg_t * msg;
ssize_t len;
@@ -113,8 +113,8 @@ static struct cacep_info * read_msg(int fd)
return tmp;
}
-static int send_msg(int fd,
- const struct cacep_info * info)
+static int send_msg(int fd,
+ const struct conn_info * info)
{
cacep_anonymous_auth_msg_t msg = CACEP_ANONYMOUS_AUTH_MSG__INIT;
cacep_proto_msg_t cmsg = CACEP_PROTO_MSG__INIT;
@@ -148,13 +148,16 @@ static int send_msg(int fd,
return ret;
}
-struct cacep_info * cacep_anonymous_auth(int fd,
- const struct cacep_info * info)
+struct conn_info * cacep_anonymous_auth(int fd,
+ const struct conn_info * info,
+ const void * auth)
{
- struct cacep_info * tmp;
+ struct conn_info * tmp;
assert(info);
+ (void) auth;
+
if (send_msg(fd, info))
return NULL;
@@ -165,30 +168,31 @@ struct cacep_info * cacep_anonymous_auth(int fd,
if (strcmp(info->proto.protocol, tmp->proto.protocol) ||
info->proto.pref_version != tmp->proto.pref_version ||
info->proto.pref_syntax != tmp->proto.pref_syntax) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
return NULL;
}
- tmp->data = NULL;
-
return tmp;
}
-struct cacep_info * cacep_anonymous_auth_wait(int fd,
- const struct cacep_info * info)
+struct conn_info * cacep_anonymous_auth_wait(int fd,
+ const struct conn_info * info,
+ const void * auth)
{
- struct cacep_info * tmp;
+ struct conn_info * tmp;
assert(info);
+ (void) auth;
+
tmp = read_msg(fd);
if (tmp == NULL)
return NULL;
if (send_msg(fd, info)) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
return NULL;
}
@@ -196,7 +200,7 @@ struct cacep_info * cacep_anonymous_auth_wait(int fd,
if (strcmp(info->proto.protocol, tmp->proto.protocol) ||
info->proto.pref_version != tmp->proto.pref_version ||
info->proto.pref_syntax != tmp->proto.pref_syntax) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
return NULL;
}
diff --git a/src/lib/pol/cacep_anonymous_auth.h b/src/lib/pol/cacep_anonymous_auth.h
index d0229b05..ca47b1b8 100644
--- a/src/lib/pol/cacep_anonymous_auth.h
+++ b/src/lib/pol/cacep_anonymous_auth.h
@@ -24,10 +24,12 @@
#ifndef OUROBOROS_LIB_CACEP_ANONYMOUS_AUTH_H
#define OUROBOROS_LIB_CACEP_ANONYMOUS_AUTH_H
-struct cacep_info * cacep_anonymous_auth(int fd,
- const struct cacep_info * info);
+struct conn_info * cacep_anonymous_auth(int fd,
+ const struct conn_info * info,
+ const void * auth);
-struct cacep_info * cacep_anonymous_auth_wait(int fd,
- const struct cacep_info * info);
+struct conn_info * cacep_anonymous_auth_wait(int fd,
+ const struct conn_info * info,
+ const void * auth);
#endif /* OUROBOROS_LIB_CACEP_ANONYMOUS_AUTH_H */
diff --git a/src/lib/pol/cacep_simple_auth.c b/src/lib/pol/cacep_simple_auth.c
index 65c510a2..69189114 100644
--- a/src/lib/pol/cacep_simple_auth.c
+++ b/src/lib/pol/cacep_simple_auth.c
@@ -38,9 +38,9 @@ typedef CacepProtoMsg cacep_proto_msg_t;
#define BUF_SIZE 2048
-static struct cacep_info * read_msg(int fd)
+static struct conn_info * read_msg(int fd)
{
- struct cacep_info * tmp;
+ struct conn_info * tmp;
uint8_t buf[BUF_SIZE];
cacep_simple_auth_msg_t * msg;
ssize_t len;
@@ -59,7 +59,7 @@ static struct cacep_info * read_msg(int fd)
return NULL;
}
- cacep_info_init(tmp);
+ conn_info_init(tmp);
tmp->addr = msg->addr;
tmp->name = strdup(msg->name);
@@ -71,7 +71,7 @@ static struct cacep_info * read_msg(int fd)
tmp->proto.protocol = strdup(msg->proto->protocol);
if (tmp->proto.protocol == NULL) {
- free(tmp->name);
+ conn_info_fini(tmp);
free(tmp);
cacep_simple_auth_msg__free_unpacked(msg, NULL);
return NULL;
@@ -80,7 +80,7 @@ static struct cacep_info * read_msg(int fd)
tmp->proto.pref_version = msg->proto->pref_version;
tmp->proto.pref_syntax = code_to_syntax(msg->proto->pref_syntax);
if (tmp->proto.pref_syntax < 0) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
cacep_simple_auth_msg__free_unpacked(msg, NULL);
return NULL;
@@ -91,8 +91,8 @@ static struct cacep_info * read_msg(int fd)
return tmp;
}
-static int send_msg(int fd,
- const struct cacep_info * info)
+static int send_msg(int fd,
+ const struct conn_info * info)
{
cacep_simple_auth_msg_t msg = CACEP_SIMPLE_AUTH_MSG__INIT;
cacep_proto_msg_t cmsg = CACEP_PROTO_MSG__INIT;
@@ -128,13 +128,17 @@ static int send_msg(int fd,
return ret;
}
-struct cacep_info * cacep_simple_auth_auth(int fd,
- const struct cacep_info * info)
+struct conn_info * cacep_simple_auth_auth(int fd,
+ const struct conn_info * info,
+ const void * auth)
{
- struct cacep_info * tmp;
+ struct conn_info * tmp;
assert(info);
+ /* This policy does not need info to authenticate */
+ (void) auth;
+
if (send_msg(fd, info))
return NULL;
@@ -145,7 +149,7 @@ struct cacep_info * cacep_simple_auth_auth(int fd,
if (strcmp(info->proto.protocol, tmp->proto.protocol) ||
info->proto.pref_version != tmp->proto.pref_version ||
info->proto.pref_syntax != tmp->proto.pref_syntax) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
return NULL;
}
@@ -154,19 +158,22 @@ struct cacep_info * cacep_simple_auth_auth(int fd,
}
-struct cacep_info * cacep_simple_auth_auth_wait(int fd,
- const struct cacep_info * info)
+struct conn_info * cacep_simple_auth_auth_wait(int fd,
+ const struct conn_info * info,
+ const void * auth)
{
- struct cacep_info * tmp;
+ struct conn_info * tmp;
assert(info);
+ (void) auth;
+
tmp = read_msg(fd);
if (tmp == NULL)
return NULL;
if (send_msg(fd, info)) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
return NULL;
}
@@ -174,7 +181,7 @@ struct cacep_info * cacep_simple_auth_auth_wait(int fd,
if (strcmp(info->proto.protocol, tmp->proto.protocol) ||
info->proto.pref_version != tmp->proto.pref_version ||
info->proto.pref_syntax != tmp->proto.pref_syntax) {
- cacep_info_fini(tmp);
+ conn_info_fini(tmp);
free(tmp);
return NULL;
}
diff --git a/src/lib/pol/cacep_simple_auth.h b/src/lib/pol/cacep_simple_auth.h
index bbdbe9b9..31398a68 100644
--- a/src/lib/pol/cacep_simple_auth.h
+++ b/src/lib/pol/cacep_simple_auth.h
@@ -24,10 +24,12 @@
#ifndef OUROBOROS_LIB_CACEP_SIMPLE_AUTH_H
#define OUROBOROS_LIB_CACEP_SIMPLE_AUTH_H
-struct cacep_info * cacep_simple_auth_auth(int fd,
- const struct cacep_info * info);
+struct conn_info * cacep_simple_auth_auth(int fd,
+ const struct conn_info * info,
+ const void * auth);
-struct cacep_info * cacep_simple_auth_auth_wait(int fd,
- const struct cacep_info * info);
+struct conn_info * cacep_simple_auth_auth_wait(int fd,
+ const struct conn_info * info,
+ const void * auth);
#endif /* OUROBOROS_LIB_CACEP_SIMPLE_AUTH_H */