From: Daniel Wagner <[email protected]>

---
 src/cgroup.c  | 25 +++++++++++++++++++++++++
 src/connman.h |  1 +
 2 files changed, 26 insertions(+)

diff --git a/src/cgroup.c b/src/cgroup.c
index 483d527..cd4128b 100644
--- a/src/cgroup.c
+++ b/src/cgroup.c
@@ -201,6 +201,31 @@ int __connman_cgroup_rem_interface(int index)
        return 0;
 }
 
+int __connman_cgroup_set_route(int index, int pid)
+{
+       struct cgroup_info *info;
+       int err;
+
+       DBG("index %d pid %d", index, pid);
+
+       if (index < 0)
+               return cgroup_attach(CGROUP_PATH, pid);
+
+       info = g_hash_table_lookup(if_hash, GINT_TO_POINTER(index));
+       if (info == NULL) {
+               connman_error("Inconsitent state. No cgroup for index %d",
+                               index);
+               return -EINVAL;
+       }
+
+       err = cgroup_attach(info->path, pid);
+       if (err < 0) {
+               DBG("Could not attach pid %s to %d", info->path, pid);
+               return err;
+       }
+
+       return 0;
+}
 
 static int check_mount_point(const char *path)
 {
diff --git a/src/connman.h b/src/connman.h
index 68d13a5..90c85ac 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -847,3 +847,4 @@ int __connman_cgroup_init(void);
 void __connman_cgroup_cleanup(void);
 int __connman_cgroup_add_interface(int index);
 int __connman_cgroup_rem_interface(int index);
+int __connman_cgroup_set_route(int index, int pid);
-- 
1.7.12.rc1.16.g05a20c8

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to