}
if (ConfGetChildValueWithDefault(if_root, if_default, "cluster-type", &tmpctype) != 1) {
- /* Default to our safest choice: flow hashing + defrag
- * enabled, unless defrag has been disabled by the user. */
- uint16_t defrag = PACKET_FANOUT_FLAG_DEFRAG;
- int conf_val = 0;
- SCLogConfig("%s: using flow cluster mode for AF_PACKET", aconf->iface);
- if (ConfGetChildValueBoolWithDefault(if_root, if_default, "defrag", &conf_val)) {
- if (!conf_val) {
- SCLogConfig(
- "%s: disabling defrag kernel functionality for AF_PACKET", aconf->iface);
- defrag = 0;
- }
- }
- aconf->cluster_type = PACKET_FANOUT_HASH | defrag;
- cluster_type = PACKET_FANOUT_HASH;
- } else if (strcmp(tmpctype, "cluster_round_robin") == 0) {
+ SCLogConfig("%s: using default cluster-type of \"cluster_flow\"", aconf->iface);
+ tmpctype = "cluster_flow";
+ }
+
+ if (strcmp(tmpctype, "cluster_rollover") == 0) {
+ SCLogWarning(
+ "%s: cluster_rollover deprecated; using \"cluster_flow\" instead. See ticket #6128",
+ aconf->iface);
+ tmpctype = "cluster_flow";
+ }
+
+ if (strcmp(tmpctype, "cluster_round_robin") == 0) {
SCLogConfig("%s: using round-robin cluster mode for AF_PACKET", aconf->iface);
aconf->cluster_type = PACKET_FANOUT_LB;
cluster_type = PACKET_FANOUT_LB;
- } else if (strcmp(tmpctype, "cluster_flow") == 0 || strcmp(tmpctype, "cluster_rollover") == 0) {
- if (strcmp(tmpctype, "cluster_rollover") == 0) {
- SCLogWarning("%s: cluster_rollover deprecated; using \"cluster_flow\" instead. See "
- "ticket #6128",
- aconf->iface);
- }
- /* In hash mode, we also ask for defragmentation needed to
- * compute the hash */
+ } else if (strcmp(tmpctype, "cluster_flow") == 0) {
+ /* Check for defrag. If not set by the user enable it when not
+ * inline. */
uint16_t defrag = 0;
int conf_val = 0;
SCLogConfig("%s: using flow cluster mode for AF_PACKET", aconf->iface);
- ConfGetChildValueBoolWithDefault(if_root, if_default, "defrag", &conf_val);
- if (conf_val) {
- SCLogConfig("%s: using defrag kernel functionality for AF_PACKET", aconf->iface);
- defrag = PACKET_FANOUT_FLAG_DEFRAG;
+ if (ConfGetChildValueBoolWithDefault(if_root, if_default, "defrag", &conf_val)) {
+ if (conf_val) {
+ SCLogConfig("%s: using defrag kernel functionality for AF_PACKET", aconf->iface);
+ defrag = PACKET_FANOUT_FLAG_DEFRAG;
+ }
+ } else {
+ /* "defrag" not provided in config, default to true if not inline. */
+ if (aconf->copy_mode == 0) {
+ SCLogConfig("%s: enabling defrag for AF_PACKET cluster_flow", aconf->iface);
+ defrag = PACKET_FANOUT_FLAG_DEFRAG;
+ }
}
aconf->cluster_type = PACKET_FANOUT_HASH | defrag;
cluster_type = PACKET_FANOUT_HASH;