summaryrefslogtreecommitdiff
path: root/src/irmd
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri.staessens@ugent.be>2018-10-24 10:06:23 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2018-10-24 11:58:49 +0200
commitda60c56365ac13a262ffa6adaba7540c4d914843 (patch)
tree8b2f3ccd5f90f217de53f6b7c905adc11e75a261 /src/irmd
parente161da9a580152e52a84c5ca31422355307bab42 (diff)
downloadouroboros-da60c56365ac13a262ffa6adaba7540c4d914843.tar.gz
ouroboros-da60c56365ac13a262ffa6adaba7540c4d914843.zip
ipcpd: Add broadcast IPCP
This adds a broadcast IPCP that allows us to easily create multicast applications. The broadcast IPCP accepts flows for "<layer_name>.mc". A tool, obc (Ouroboros broadcast), is added that sends and reads a message to a broadcast layer. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
Diffstat (limited to 'src/irmd')
-rw-r--r--src/irmd/config.h.in1
-rw-r--r--src/irmd/ipcp.c3
-rw-r--r--src/irmd/main.c2
3 files changed, 5 insertions, 1 deletions
diff --git a/src/irmd/config.h.in b/src/irmd/config.h.in
index a4c7128e..ad8a5520 100644
--- a/src/irmd/config.h.in
+++ b/src/irmd/config.h.in
@@ -24,6 +24,7 @@
#define IPCP_ETH_LLC_EXEC "@IPCP_ETH_LLC_TARGET@"
#define IPCP_ETH_DIX_EXEC "@IPCP_ETH_DIX_TARGET@"
#define IPCP_NORMAL_EXEC "@IPCP_NORMAL_TARGET@"
+#define IPCP_BROADCAST_EXEC "@IPCP_BROADCAST_TARGET@"
#define IPCP_LOCAL_EXEC "@IPCP_LOCAL_TARGET@"
#define IPCP_RAPTOR_EXEC "@IPCP_RAPTOR_TARGET@"
diff --git a/src/irmd/ipcp.c b/src/irmd/ipcp.c
index 19e68ee7..7f3f4807 100644
--- a/src/irmd/ipcp.c
+++ b/src/irmd/ipcp.c
@@ -140,6 +140,9 @@ pid_t ipcp_create(const char * name,
case IPCP_NORMAL:
exec_name = IPCP_NORMAL_EXEC;
break;
+ case IPCP_BROADCAST:
+ exec_name = IPCP_BROADCAST_EXEC;
+ break;
case IPCP_UDP:
exec_name = IPCP_UDP_EXEC;
break;
diff --git a/src/irmd/main.c b/src/irmd/main.c
index 9ddcbbbc..67e16de0 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -618,7 +618,7 @@ static int connect_ipcp(pid_t pid,
return -EIPCP;
}
- if (entry->type != IPCP_NORMAL) {
+ if (entry->type != IPCP_NORMAL && entry->type != IPCP_BROADCAST) {
pthread_rwlock_unlock(&irmd.reg_lock);
log_err("Cannot establish connections for this IPCP type.");
return -EIPCP;