static void
help(void)
{
+#ifdef IP6T_OWNER_COMM
printf(
"OWNER match v%s options:\n"
"[!] --uid-owner userid Match local uid\n"
"[!] --gid-owner groupid Match local gid\n"
"[!] --pid-owner processid Match local pid\n"
"[!] --sid-owner sessionid Match local sid\n"
+"[!] --cmd-owner name Match local command name\n"
"\n",
IPTABLES_VERSION);
+#else
+ printf(
+"OWNER match v%s options:\n"
+"[!] --uid-owner userid Match local uid\n"
+"[!] --gid-owner groupid Match local gid\n"
+"[!] --pid-owner processid Match local pid\n"
+"[!] --sid-owner sessionid Match local sid\n"
+"\n",
+IPTABLES_VERSION);
+#endif /* IP6T_OWNER_COMM */
}
static struct option opts[] = {
{ "gid-owner", 1, 0, '2' },
{ "pid-owner", 1, 0, '3' },
{ "sid-owner", 1, 0, '4' },
+#ifdef IP6T_OWNER_COMM
+ { "cmd-owner", 1, 0, '5' },
+#endif
{0}
};
*flags = 1;
break;
+#ifdef IP6T_OWNER_COMM
+ case '5':
+ check_inverse(optarg, &invert, &optind, 0);
+ if(strlen(optarg) > sizeof(ownerinfo->comm))
+ exit_error(PARAMETER_PROBLEM, "OWNER CMD `%s' too long, max %d characters", optarg, sizeof(ownerinfo->comm));
+
+ strncpy(ownerinfo->comm, optarg, sizeof(ownerinfo->comm));
+
+ if (invert)
+ ownerinfo->invert |= IP6T_OWNER_COMM;
+ ownerinfo->match |= IP6T_OWNER_COMM;
+ *flags = 1;
+ break;
+#endif
+
default:
return 0;
}
case IP6T_OWNER_SID:
printf("%u ", info->sid);
break;
+#ifdef IP6T_OWNER_COMM
+ case IP6T_OWNER_COMM:
+ printf("%.*s ", (int)sizeof(info->comm), info->comm);
+ break;
+#endif
default:
break;
}
print_item(info, IP6T_OWNER_GID, numeric, "OWNER GID match ");
print_item(info, IP6T_OWNER_PID, numeric, "OWNER PID match ");
print_item(info, IP6T_OWNER_SID, numeric, "OWNER SID match ");
+#ifdef IP6T_OWNER_COMM
+ print_item(info, IP6T_OWNER_COMM, numeric, "OWNER CMD match ");
+#endif
}
/* Saves the union ip6t_matchinfo in parsable form to stdout. */
print_item(info, IP6T_OWNER_GID, 0, "--gid-owner ");
print_item(info, IP6T_OWNER_PID, 0, "--pid-owner ");
print_item(info, IP6T_OWNER_SID, 0, "--sid-owner ");
+#ifdef IP6T_OWNER_COMM
+ print_item(info, IP6T_OWNER_COMM, 0, "--cmd-owner ");
+#endif
}
static