File: priod.py

package info (click to toggle)
libreswan 5.2-2.3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 81,644 kB
  • sloc: ansic: 129,988; sh: 32,018; xml: 20,646; python: 10,303; makefile: 3,022; javascript: 1,506; sed: 574; yacc: 511; perl: 264; awk: 52
file content (27 lines) | stat: -rwxr-xr-x 898 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3

# break down a decimal representation of an SA priority into its fields
# synopsis: priod.py prio...
# Copyright (C) 2018 D. Hugh Redelmeier (hugh@mimosa.com)


# from calculate_sa_prio(): uint32_t prio = pmax - (portsw << 17 | protow << 16 | srcw << 8 | dstw);

import sys

for p in sys.argv[1:]:
	n = int(p)
	pmin = (n >> 19) << 19
	pmax = pmin + (1 << 19) - 1
	pname = ['manual', 'static', 'oppo', 'oppo_anon'][pmin >> 19]
	if pmin == 0:
		print('{} {} {}'.format(n, hex(n), pname))
	else:
		# n == pmax - fields
		fields = pmax - n
		portsw = fields >> 17
		protow = (fields >> 16) & 1
		srcw = (fields >> 8) & 255
		dstw = fields & 255
		# print(n, ' ', hex(n), ' ', pname, ' portsw ', portsw, ', protow ', protow, ', srcw ', srcw, ', dstw ', dstw, sep='')
		print('{} {} {} portsw {}, protow {}, srcw {}, dstw {}'.format(n, hex(n), pname, portsw, protow, srcw, dstw))