diff --git a/lib/kc3/0.1/kc3.facts b/lib/kc3/0.1/kc3.facts
index 8717fe1..84bec95 100644
--- a/lib/kc3/0.1/kc3.facts
+++ b/lib/kc3/0.1/kc3.facts
@@ -387,3 +387,5 @@ add {KC3, :symbol, KC3.killpg}
replace {KC3.killpg, :symbol_value, cfn Bool "kc3_killpg" (Sw, Sym)}
add {KC3, :symbol, KC3.is_integer?}
replace {KC3.is_integer?, :symbol_value, cfn Bool "tag_is_integer" (Tag)}
+add {KC3, :symbol, KC3.sysctl}
+replace {KC3.sysctl, :symbol_value, cfn Tag "kc3_sysctl" (Result, List)}
diff --git a/libkc3/kc3.c b/libkc3/kc3.c
index c849abe..3b17e53 100644
--- a/libkc3/kc3.c
+++ b/libkc3/kc3.c
@@ -728,6 +728,20 @@ s_tag * kc3_struct_put (s_tag *s, const s_sym * const *key,
return dest;
}
+s_tag * kc3_sysctl (s_tag *dest, const s_list * const *list)
+{
+ s32 mib[64];
+ s32 mib_len = 0;
+ s32 i;
+ const s_list *l;
+ l = list;
+ while (l) {
+ if (l->tag.type != TAG_SYM) {
+ err_puts("kc3_sysctl: argument is not a Sym list")
+ assert(! "kc3_sysctl: argument is not a Sym list")
+ l = list_next(l);
+ }
+}
s_str * kc3_system (const s_list * const *list, s_str *dest)
{
#ifdef WIN32
diff --git a/smtp b/smtp
index fbe3b5d..02d1ed5 160000
--- a/smtp
+++ b/smtp
@@ -1 +1 @@
-Subproject commit fbe3b5d57abcc6d3e155354267fccfd454c61b83
+Subproject commit 02d1ed5b4e3dc659bd899f37edde7a0e4f44433e