diff --git a/cf-net/cf-net.c b/cf-net/cf-net.c index aaf8c7f4d23..10badcc1754 100644 --- a/cf-net/cf-net.c +++ b/cf-net/cf-net.c @@ -133,7 +133,7 @@ static const char *const HINTS[] = "Enable basic information output", "Minimum TLS version to use", "TLS ciphers to use (comma-separated list)", - "Specify CFEngine protocol to use. Possible values: 'classic', 'tls', 'cookie', 'filestream', 'leech2', 'latest' (default)", + "Specify CFEngine protocol to use. Possible values: 'classic', 'tls', 'cookie', 'filestream', 'leech2', 'transfusion', 'latest' (default)", "Print rsync performance statistics to stderr", NULL }; diff --git a/libcfnet/protocol_version.c b/libcfnet/protocol_version.c index 56049c582c4..034f01be582 100644 --- a/libcfnet/protocol_version.c +++ b/libcfnet/protocol_version.c @@ -41,6 +41,10 @@ ProtocolVersion ParseProtocolVersionPolicy(const char *const s) { return CF_PROTOCOL_LEECH2; } + else if (StringEqual(s, "6") || StringEqual(s, "transfusion")) + { + return CF_PROTOCOL_TRANSFUSION; + } else if (StringEqual(s, "latest")) { return CF_PROTOCOL_LATEST; diff --git a/libcfnet/protocol_version.h b/libcfnet/protocol_version.h index 14d90303056..9ca344e019f 100644 --- a/libcfnet/protocol_version.h +++ b/libcfnet/protocol_version.h @@ -41,10 +41,11 @@ typedef enum CF_PROTOCOL_COOKIE = 3, CF_PROTOCOL_FILESTREAM = 4, CF_PROTOCOL_LEECH2 = 5, + CF_PROTOCOL_TRANSFUSION = 6, } ProtocolVersion; /* We use CF_PROTOCOL_LATEST as the default for new connections. */ -#define CF_PROTOCOL_LATEST CF_PROTOCOL_LEECH2 +#define CF_PROTOCOL_LATEST CF_PROTOCOL_TRANSFUSION static inline const char *ProtocolVersionString(const ProtocolVersion p) { @@ -60,6 +61,8 @@ static inline const char *ProtocolVersionString(const ProtocolVersion p) return "filestream"; case CF_PROTOCOL_LEECH2: return "leech2"; + case CF_PROTOCOL_TRANSFUSION: + return "transfusion"; default: return "undefined"; } @@ -100,6 +103,11 @@ static inline bool ProtocolSupportsLeech2(const ProtocolVersion p) return (p >= CF_PROTOCOL_LEECH2); } +static inline bool ProtocolSupportsTransfusion(const ProtocolVersion p) +{ + return (p >= CF_PROTOCOL_TRANSFUSION); +} + static inline bool ProtocolTerminateCSV(const ProtocolVersion p) { return (p < CF_PROTOCOL_COOKIE); diff --git a/libpromises/mod_common.c b/libpromises/mod_common.c index b3ce69ae73a..706b072f937 100644 --- a/libpromises/mod_common.c +++ b/libpromises/mod_common.c @@ -266,7 +266,7 @@ const ConstraintSyntax CFG_CONTROLBODY[COMMON_CONTROL_MAX + 1] = ConstraintSyntaxNewBool("fips_mode", "Activate full FIPS mode restrictions. Default value: false", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewReal("bwlimit", CF_VALRANGE, "Limit outgoing protocol bandwidth in Bytes per second", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewBool("cache_system_functions", "Cache the result of system functions. Default value: true", SYNTAX_STATUS_NORMAL), - ConstraintSyntaxNewOption("protocol_version", "1,classic,2,tls,3,cookie,4,filestream,5,leech2,latest", "CFEngine protocol version to use when connecting to the server. Default: \"latest\"", SYNTAX_STATUS_NORMAL), + ConstraintSyntaxNewOption("protocol_version", "1,classic,2,tls,3,cookie,4,filestream,5,leech2,6,transfusion,latest", "CFEngine protocol version to use when connecting to the server. Default: \"latest\"", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewString("tls_ciphers", "", "List of acceptable ciphers in outgoing TLS connections, defaults to OpenSSL's default. For syntax help see man page for \"openssl ciphers\"", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewString("tls_min_version", "", "Minimum acceptable TLS version for outgoing connections, defaults to OpenSSL's default", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewStringList("package_inventory", ".*", "Name of the package manager used for software inventory management", SYNTAX_STATUS_NORMAL), diff --git a/libpromises/mod_files.c b/libpromises/mod_files.c index fc93b4b155d..8ea14d6bfb1 100644 --- a/libpromises/mod_files.c +++ b/libpromises/mod_files.c @@ -336,7 +336,7 @@ static const ConstraintSyntax copy_from_constraints[] = ConstraintSyntaxNewBool("trustkey", "true/false trust public keys from remote server if previously unknown. Default value: false", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewBool("type_check", "true/false compare file types before copying and require match", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewBool("verify", "true/false verify transferred file by hashing after copy (resource penalty). Default value: false", SYNTAX_STATUS_NORMAL), - ConstraintSyntaxNewOption("protocol_version", "1,classic,2,tls,3,cookie,4,filestream,5,leech2,latest", "CFEngine protocol version to use when connecting to the server. Default: undefined", SYNTAX_STATUS_NORMAL), + ConstraintSyntaxNewOption("protocol_version", "1,classic,2,tls,3,cookie,4,filestream,5,leech2,6,transfusion,latest", "CFEngine protocol version to use when connecting to the server. Default: undefined", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewBool("missing_ok", "true/false Do not treat missing file as an error. Default value: false", SYNTAX_STATUS_NORMAL), ConstraintSyntaxNewNull() };