diff --git a/accel-pppd/extra/net-snmp/agent.c b/accel-pppd/extra/net-snmp/agent.c index cfeb763927f0f28552ba48fbc89452f8c9c1a19c..9f8b1a74af4fbdf47d42459c87be33d7f1988e75 100644 --- a/accel-pppd/extra/net-snmp/agent.c +++ b/accel-pppd/extra/net-snmp/agent.c @@ -1,5 +1,8 @@ +#include #include +#include #include +#include #include #include @@ -80,6 +83,14 @@ static void *snmp_thread(void *a) sigdelset(&set, 32); pthread_sigmask(SIG_BLOCK, &set, NULL); + if (unshare(CLONE_FILES) < 0) { + log_error("net-snmp: impossible to start SNMP thread:" + " unshare(CLONE_FILES) failed (%s)\n", + strerror(errno)); + + return NULL; + } + snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_LOGGING, agent_log, NULL); snmp_disable_log(); snmp_enable_calllog();