--- ./slpd/slpd_predicate.c.orig 2014-12-15 14:11:36.181812237 +0000 +++ ./slpd/slpd_predicate.c 2014-12-15 14:20:00.441759165 +0000 @@ -66,6 +66,7 @@ #include "slp_xmalloc.h" #include "slpd_predicate.h" +#include "slpd_property.h" /* Parse character definitions. */ #define BRACKET_OPEN '(' @@ -1633,6 +1634,11 @@ SLPDPredicateParseResult createPredicate op = EQUAL; } + if (op == EQUAL && G_SlpdProperty.allowDoubleEqualInPredicate && operator[1] == '=') + { + val_start++; + } + /***** Get operands. *****/ /**** Left. ****/ lhs_len = operator - cur; --- ./slpd/slpd_property.c.orig 2014-12-15 14:09:49.294246247 +0000 +++ ./slpd/slpd_property.c 2014-12-15 14:11:21.587871548 +0000 @@ -250,6 +250,7 @@ void SLPDPropertyReinit(void) G_SlpdProperty.myHostnameLen = strlen(G_SlpdProperty.myHostname); G_SlpdProperty.hardMTU = SLPPropertyAsBoolean("net.slp.hardMTU"); + G_SlpdProperty.allowDoubleEqualInPredicate = SLPPropertyAsBoolean("net.slp.allowDoubleEqualInPredicate"); G_SlpdProperty.DASyncReg = SLPPropertyAsBoolean("net.slp.DASyncReg"); G_SlpdProperty.isDABackup = SLPPropertyAsBoolean("net.slp.isDABackup"); --- ./slpd/slpd_property.h.orig 2014-12-15 14:09:43.647269171 +0000 +++ ./slpd/slpd_property.h 2014-12-15 14:10:24.932101603 +0000 @@ -118,6 +118,7 @@ typedef struct _SLPDProperty int useDHCP; int oversizedUDP; int hardMTU; + int allowDoubleEqualInPredicate; int DASyncReg; int isDABackup;