summaryrefslogtreecommitdiff
path: root/src/ipcpd/ipcp.c
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@intec.ugent.be>2016-05-08 16:34:19 +0200
committerSander Vrijders <sander.vrijders@intec.ugent.be>2016-05-08 16:34:19 +0200
commit5812dfb832e513dc455a0d48624bcad62334d457 (patch)
tree93a02e1b20f54bb869eadc856f201412c633315c /src/ipcpd/ipcp.c
parentde8f2015cbd015b1cced366cb12c054be62c23b1 (diff)
parent021af9e01ce6c6376534b33ef1a06ea4189028d4 (diff)
downloadouroboros-5812dfb832e513dc455a0d48624bcad62334d457.tar.gz
ouroboros-5812dfb832e513dc455a0d48624bcad62334d457.zip
Merged in dstaesse/ouroboros/be-fast-path (pull request #65)
irmd: flow allocation and fast path
Diffstat (limited to 'src/ipcpd/ipcp.c')
-rw-r--r--src/ipcpd/ipcp.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index d6f373cd..13632a80 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -45,11 +45,12 @@ int ipcp_arg_check(int argc, char * argv[])
return 0;
}
-int ipcp_main_loop(struct ipcp * _ipcp)
+void * ipcp_main_loop(void * o)
{
int lsockfd;
int sockfd;
uint8_t buf[IPCP_MSG_BUF_SIZE];
+ struct ipcp * _ipcp = (struct ipcp *) o;
ipcp_msg_t * msg;
ssize_t count;
@@ -61,13 +62,13 @@ int ipcp_main_loop(struct ipcp * _ipcp)
if (_ipcp == NULL) {
LOG_ERR("Invalid ipcp struct.");
- return 1;
+ return (void *) 1;
}
sockfd = server_socket_open(ipcp_sock_path(getpid()));
if (sockfd < 0) {
LOG_ERR("Could not open server socket.");
- return 1;
+ return (void *) 1;
}
while (true) {
@@ -113,7 +114,7 @@ int ipcp_main_loop(struct ipcp * _ipcp)
conf.max_pdu_size = conf_msg->max_pdu_size;
}
if (conf_msg->ipcp_type == IPCP_SHIM_UDP) {
- conf.ip_addr = conf_msg->ip_addr;
+ conf.ip_addr = conf_msg->ip_addr;
conf.dns_addr = conf_msg->dns_addr;
}
@@ -149,7 +150,8 @@ int ipcp_main_loop(struct ipcp * _ipcp)
}
ret_msg.has_result = true;
ret_msg.result =
- _ipcp->ops->ipcp_unreg(msg->dif_names, msg->len);
+ _ipcp->ops->ipcp_unreg(msg->dif_names,
+ msg->len);
break;
case IPCP_MSG_CODE__IPCP_NAME_REG:
if (_ipcp->ops->ipcp_name_reg == NULL) {
@@ -172,9 +174,10 @@ int ipcp_main_loop(struct ipcp * _ipcp)
LOG_ERR("Flow_alloc unsupported.");
break;
}
- ret_msg.has_fd = true;
- ret_msg.fd =
+ ret_msg.has_result = true;
+ ret_msg.result =
_ipcp->ops->ipcp_flow_alloc(msg->port_id,
+ msg->pid,
msg->dst_name,
msg->src_ap_name,
msg->src_ae_name,
@@ -188,6 +191,7 @@ int ipcp_main_loop(struct ipcp * _ipcp)
ret_msg.has_result = true;
ret_msg.result =
_ipcp->ops->ipcp_flow_alloc_resp(msg->port_id,
+ msg->pid,
msg->result);
break;
case IPCP_MSG_CODE__IPCP_FLOW_DEALLOC:
@@ -231,5 +235,5 @@ int ipcp_main_loop(struct ipcp * _ipcp)
close(lsockfd);
}
- return 0;
+ return NULL;
}