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