|
1 | 1 | import sys
|
2 | 2 |
|
3 |
| -# Should be in EXACT same order as from src/mongoc/mongoc-handshake-private.h. |
4 |
| -# The values are implicit (so we assume 1st entry is 1 << 0, |
5 |
| -# second entry is 1 << 1 and so on). |
6 |
| -MD_FLAGS = [ |
7 |
| - "MONGOC_MD_FLAG_ENABLE_CRYPTO", |
8 |
| - "MONGOC_MD_FLAG_ENABLE_CRYPTO_CNG", |
9 |
| - "MONGOC_MD_FLAG_ENABLE_CRYPTO_COMMON_CRYPTO", |
10 |
| - "MONGOC_MD_FLAG_ENABLE_CRYPTO_LIBCRYPTO", |
11 |
| - "MONGOC_MD_FLAG_ENABLE_CRYPTO_SYSTEM_PROFILE", |
12 |
| - "MONGOC_MD_FLAG_ENABLE_SASL", |
13 |
| - "MONGOC_MD_FLAG_ENABLE_SSL", |
14 |
| - "MONGOC_MD_FLAG_ENABLE_SSL_OPENSSL", |
15 |
| - "MONGOC_MD_FLAG_ENABLE_SSL_SECURE_CHANNEL", |
16 |
| - "MONGOC_MD_FLAG_ENABLE_SSL_SECURE_TRANSPORT", |
17 |
| - "MONGOC_MD_FLAG_EXPERIMENTAL_FEATURES", |
18 |
| - "MONGOC_MD_FLAG_HAVE_SASL_CLIENT_DONE", |
19 |
| - "MONGOC_MD_FLAG_HAVE_WEAK_SYMBOLS", |
20 |
| - "MONGOC_MD_FLAG_NO_AUTOMATIC_GLOBALS", |
21 |
| - "MONGOC_MD_FLAG_ENABLE_SSL_LIBRESSL", |
22 |
| - "MONGOC_MD_FLAG_ENABLE_SASL_CYRUS", |
23 |
| - "MONGOC_MD_FLAG_ENABLE_SASL_SSPI", |
24 |
| - "MONGOC_MD_FLAG_HAVE_SOCKLEN", |
25 |
| - "MONGOC_MD_FLAG_ENABLE_COMPRESSION", |
26 |
| - "MONGOC_MD_FLAG_ENABLE_COMPRESSION_SNAPPY", |
27 |
| - "MONGOC_MD_FLAG_ENABLE_COMPRESSION_ZLIB", |
28 |
| - "MONGOC_MD_FLAG_ENABLE_SASL_GSSAPI", |
29 |
| - "MONGOC_MD_FLAG_ENABLE_RES_NSEARCH", |
30 |
| - "MONGOC_MD_FLAG_ENABLE_RES_NDESTROY", |
31 |
| - "MONGOC_MD_FLAG_ENABLE_RES_NCLOSE", |
32 |
| - "MONGOC_MD_FLAG_ENABLE_RES_SEARCH", |
33 |
| - "MONGOC_MD_FLAG_ENABLE_DNSAPI", |
34 |
| - "MONGOC_MD_FLAG_ENABLE_RDTSCP", |
35 |
| - "MONGOC_MD_FLAG_HAVE_SCHED_GETCPU", |
36 |
| - "MONGOC_MD_FLAG_ENABLE_SHM_COUNTERS", |
37 |
| - "MONGOC_MD_FLAG_TRACE", |
38 |
| - "MONGOC_MD_FLAG_ENABLE_CLIENT_SIDE_ENCRYPTION", |
39 |
| - "MONGOC_MD_FLAG_ENABLE_MONGODB_AWS_AUTH", |
40 |
| - "MONGOC_MD_FLAG_ENABLE_SRV", |
41 |
| -] |
| 3 | +# `MD_FLAGS` maps the flag to its bit position. |
| 4 | +# The bit positions must match those defined in src/mongoc/mongoc-handshake-private.h |
| 5 | +MD_FLAGS = { |
| 6 | + "MONGOC_MD_FLAG_ENABLE_CRYPTO": 0, |
| 7 | + "MONGOC_MD_FLAG_ENABLE_CRYPTO_CNG": 1, |
| 8 | + "MONGOC_MD_FLAG_ENABLE_CRYPTO_COMMON_CRYPTO": 2, |
| 9 | + "MONGOC_MD_FLAG_ENABLE_CRYPTO_LIBCRYPTO": 3, |
| 10 | + "MONGOC_MD_FLAG_ENABLE_CRYPTO_SYSTEM_PROFILE": 4, |
| 11 | + "MONGOC_MD_FLAG_ENABLE_SASL": 5, |
| 12 | + "MONGOC_MD_FLAG_ENABLE_SSL": 6, |
| 13 | + "MONGOC_MD_FLAG_ENABLE_SSL_OPENSSL": 7, |
| 14 | + "MONGOC_MD_FLAG_ENABLE_SSL_SECURE_CHANNEL": 8, |
| 15 | + "MONGOC_MD_FLAG_ENABLE_SSL_SECURE_TRANSPORT": 9, |
| 16 | + "MONGOC_MD_FLAG_EXPERIMENTAL_FEATURES": 10, |
| 17 | + "MONGOC_MD_FLAG_HAVE_SASL_CLIENT_DONE": 11, |
| 18 | + "MONGOC_MD_FLAG_HAVE_WEAK_SYMBOLS": 12, |
| 19 | + "MONGOC_MD_FLAG_NO_AUTOMATIC_GLOBALS": 13, |
| 20 | + "MONGOC_MD_FLAG_ENABLE_SSL_LIBRESSL": 14, |
| 21 | + "MONGOC_MD_FLAG_ENABLE_SASL_CYRUS": 15, |
| 22 | + "MONGOC_MD_FLAG_ENABLE_SASL_SSPI": 16, |
| 23 | + "MONGOC_MD_FLAG_HAVE_SOCKLEN": 17, |
| 24 | + "MONGOC_MD_FLAG_ENABLE_COMPRESSION": 18, |
| 25 | + "MONGOC_MD_FLAG_ENABLE_COMPRESSION_SNAPPY": 19, |
| 26 | + "MONGOC_MD_FLAG_ENABLE_COMPRESSION_ZLIB": 20, |
| 27 | + "MONGOC_MD_FLAG_ENABLE_SASL_GSSAPI": 21, |
| 28 | + "MONGOC_MD_FLAG_ENABLE_RES_NSEARCH": 22, |
| 29 | + "MONGOC_MD_FLAG_ENABLE_RES_NDESTROY": 23, |
| 30 | + "MONGOC_MD_FLAG_ENABLE_RES_NCLOSE": 24, |
| 31 | + "MONGOC_MD_FLAG_ENABLE_RES_SEARCH": 25, |
| 32 | + "MONGOC_MD_FLAG_ENABLE_DNSAPI": 26, |
| 33 | + "MONGOC_MD_FLAG_ENABLE_RDTSCP": 27, |
| 34 | + "MONGOC_MD_FLAG_HAVE_SCHED_GETCPU": 28, |
| 35 | + "MONGOC_MD_FLAG_ENABLE_SHM_COUNTERS": 29, |
| 36 | + "MONGOC_MD_FLAG_TRACE": 30, |
| 37 | + # `MONGOC_MD_FLAG_ENABLE_ICU` was accidentally removed in libmongoc 1.25.0-1.25.3. |
| 38 | + # If parsing a config-bitfield produced by libmongoc 1.25.0-1.25.3, use the version of `parse_handshake_cfg.py` from the git tag 1.25.0. |
| 39 | + "MONGOC_MD_FLAG_ENABLE_ICU": 31, |
| 40 | + "MONGOC_MD_FLAG_ENABLE_CLIENT_SIDE_ENCRYPTION": 32, |
| 41 | + "MONGOC_MD_FLAG_ENABLE_MONGODB_AWS_AUTH": 33, |
| 42 | + "MONGOC_MD_FLAG_ENABLE_SRV": 34, |
| 43 | +} |
42 | 44 |
|
43 | 45 | def main():
|
44 |
| - flag_to_number = {s: 2 ** i for i,s in enumerate(MD_FLAGS)} |
| 46 | + flag_to_number = {s: 2 ** i for s,i in MD_FLAGS.items()} |
45 | 47 |
|
46 | 48 | if len(sys.argv) < 2:
|
47 |
| - print "Usage: python {0} config-bitfield".format(sys.argv[0]) |
48 |
| - print "Example: python parse_handshake_cfg.py 0x3e65" |
| 49 | + print ("Usage: python {0} config-bitfield".format(sys.argv[0])) |
| 50 | + print ("Example: python parse_handshake_cfg.py 0x3e65") |
49 | 51 | return
|
50 | 52 |
|
51 | 53 | config_bitfield_string = sys.argv[1]
|
52 | 54 | config_bitfield_num = int(config_bitfield_string, 0)
|
53 |
| - print "Decimal value: {}".format(config_bitfield_num) |
| 55 | + print ("Decimal value: {}".format(config_bitfield_num)) |
54 | 56 |
|
55 |
| - for flag, num in flag_to_number.iteritems(): |
| 57 | + for flag, num in flag_to_number.items(): |
56 | 58 | v = "true" if config_bitfield_num & num else "false"
|
57 |
| - print "{:<50}: {}".format(flag, v) |
| 59 | + print ("{:<50}: {}".format(flag, v)) |
58 | 60 |
|
59 | 61 | if __name__ == "__main__":
|
60 | 62 | main()
|
0 commit comments