summaryrefslogtreecommitdiff
path: root/src/lib/irm.c
diff options
context:
space:
mode:
authorSander Vrijders <[email protected]>2016-08-21 21:12:03 +0200
committerSander Vrijders <[email protected]>2016-08-21 21:12:03 +0200
commitf0d4305c067044e74c44032c32ce6c4db3c6fffa (patch)
treed895b25fb5a8f7af106c6c2d3228b62ade81b3b4 /src/lib/irm.c
parentba27593e3e8406e109393ae383f17c7416675c1e (diff)
parentcee5ae97ee14438b2dabc06bfad9b02e42e4d816 (diff)
downloadouroboros-f0d4305c067044e74c44032c32ce6c4db3c6fffa.tar.gz
ouroboros-f0d4305c067044e74c44032c32ce6c4db3c6fffa.zip
Merged in dstaesse/ouroboros/be-irmd-refactor (pull request #213)
irmd, lib: Rebuild the IRMd data model
Diffstat (limited to 'src/lib/irm.c')
-rw-r--r--src/lib/irm.c85
1 files changed, 69 insertions, 16 deletions
diff --git a/src/lib/irm.c b/src/lib/irm.c
index 4c71817d..64a4fa0f 100644
--- a/src/lib/irm.c
+++ b/src/lib/irm.c
@@ -321,21 +321,21 @@ static int check_ap_path(char ** ap_name)
return -ENOENT;
}
-int irm_bind(char * name,
- char * ap_name,
- uint16_t opts,
- int argc,
- char ** argv)
+int irm_bind_ap(char * ap,
+ char * name,
+ uint16_t opts,
+ int argc,
+ char ** argv)
{
irm_msg_t msg = IRM_MSG__INIT;
irm_msg_t * recv_msg = NULL;
int ret = -1;
char * full_ap_name;
- if (name == NULL || ap_name == NULL)
+ if (ap == NULL || name == NULL)
return -EINVAL;
- full_ap_name = strdup(ap_name);
+ full_ap_name = strdup(ap);
if (full_ap_name == NULL)
return -ENOMEM;
@@ -344,7 +344,7 @@ int irm_bind(char * name,
return ret;
}
- msg.code = IRM_MSG_CODE__IRM_BIND;
+ msg.code = IRM_MSG_CODE__IRM_BIND_AP;
msg.dst_name = name;
msg.ap_name = full_ap_name;
@@ -372,23 +372,76 @@ int irm_bind(char * name,
return ret;
}
-int irm_unbind(char * name,
- char * ap_name,
- uint16_t opts)
+int irm_bind_api(pid_t api, char * name)
{
irm_msg_t msg = IRM_MSG__INIT;
irm_msg_t * recv_msg = NULL;
int ret = -1;
- if (name == NULL || ap_name == NULL)
+ if (name == NULL)
return -EINVAL;
- msg.code = IRM_MSG_CODE__IRM_UNBIND;
+ msg.code = IRM_MSG_CODE__IRM_BIND_API;
+ msg.has_api = true;
+ msg.api = api;
+ msg.dst_name = name;
+
+ recv_msg = send_recv_irm_msg(&msg);
+ if (recv_msg == NULL)
+ return -1;
+
+ if (recv_msg->has_result == false) {
+ irm_msg__free_unpacked(recv_msg, NULL);
+ return -1;
+ }
+
+ ret = recv_msg->result;
+ irm_msg__free_unpacked(recv_msg, NULL);
+ return ret;
+}
+
+int irm_unbind_ap(char * ap, char * name)
+{
+ irm_msg_t msg = IRM_MSG__INIT;
+ irm_msg_t * recv_msg = NULL;
+ int ret = -1;
+
+ if (name == NULL)
+ return -EINVAL;
+
+ msg.code = IRM_MSG_CODE__IRM_UNBIND_AP;
+ msg.ap_name = ap;
+ msg.dst_name = name;
+
+ recv_msg = send_recv_irm_msg(&msg);
+ if (recv_msg == NULL)
+ return -1;
+
+ if (recv_msg->has_result == false) {
+ irm_msg__free_unpacked(recv_msg, NULL);
+ return -1;
+ }
+
+ ret = recv_msg->result;
+ irm_msg__free_unpacked(recv_msg, NULL);
+
+ return ret;
+}
+
+int irm_unbind_api(pid_t api, char * name)
+{
+ irm_msg_t msg = IRM_MSG__INIT;
+ irm_msg_t * recv_msg = NULL;
+ int ret = -1;
+
+ if (name == NULL)
+ return -EINVAL;
+
+ msg.code = IRM_MSG_CODE__IRM_UNBIND_API;
+ msg.has_api = true;
+ msg.api = api;
msg.dst_name = name;
- msg.ap_name = ap_name;
- msg.has_opts = true;
- msg.opts = opts;
recv_msg = send_recv_irm_msg(&msg);
if (recv_msg == NULL)