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 cb21c82..2742abb 100644
--- a/src/cgroup.c
+++ b/src/cgroup.c
@@ -212,6 +212,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 %d to %s", pid, info->path);
+               return err;
+       }
+
+       return 0;
+}
 
 static int check_mount_point(const char *path)
 {
diff --git a/src/connman.h b/src/connman.h
index eb43001..b9be81d 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -852,3 +852,4 @@ int __connman_cgroup_init(void);
 void __connman_cgroup_cleanup(void);
 int __connman_cgroup_add_interface(int index, uint32_t fwmark);
 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