DEV: h2: add support for multiple flags in mkhdr
The mkhdr script did not support passing multiple flags at once using symbolic names. That's now done.
This commit is contained in:
parent
6d00505cd3
commit
5bf19f8b57
|
@ -4,7 +4,7 @@
|
||||||
# All fields are optional. 0 assumed when absent.
|
# All fields are optional. 0 assumed when absent.
|
||||||
|
|
||||||
USAGE=\
|
USAGE=\
|
||||||
"Usage: %s [-l <len> ] [-t <type>] [-f <flags>] [-i <sid>] [ -d <data> ]
|
"Usage: %s [-l <len> ] [-t <type>] [-f <flags>[,...]] [-i <sid>] [ -d <data> ]
|
||||||
[ -e <name> <value> ]* [ -r raw ] [ -h | --help ] > hdr.bin
|
[ -e <name> <value> ]* [ -r raw ] [ -h | --help ] > hdr.bin
|
||||||
Numbers are decimal or 0xhex. Not set=0. If <data> is passed, it points
|
Numbers are decimal or 0xhex. Not set=0. If <data> is passed, it points
|
||||||
to a file that is read and chunked into frames of <len> bytes. -e
|
to a file that is read and chunked into frames of <len> bytes. -e
|
||||||
|
@ -53,7 +53,7 @@ mkframe() {
|
||||||
local T="${2:-0}"
|
local T="${2:-0}"
|
||||||
local F="${3:-0}"
|
local F="${3:-0}"
|
||||||
local I="${4:-0}"
|
local I="${4:-0}"
|
||||||
local t f
|
local t f f2 f3
|
||||||
|
|
||||||
# get the first match in this order
|
# get the first match in this order
|
||||||
for t in DATA:0x00 HEADERS:0x01 RST_STREAM:0x03 SETTINGS:0x04 PING:0x06 \
|
for t in DATA:0x00 HEADERS:0x01 RST_STREAM:0x03 SETTINGS:0x04 PING:0x06 \
|
||||||
|
@ -71,17 +71,37 @@ mkframe() {
|
||||||
die
|
die
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# get the first match in this order
|
# get the first match in this order, for each entry delimited by ','.
|
||||||
for f in ES:0x01 EH:0x04 PAD:0x08 PRIO:0x20; do
|
# E.g.: "-f ES,EH"
|
||||||
if [ -z "${f##${F^^*}*}" ]; then
|
f2=${F^^*}; F=0
|
||||||
F="${f##*:}"
|
|
||||||
|
while [ -n "$f2" ]; do
|
||||||
|
f3="${f2%%,*}"
|
||||||
|
tmp=""
|
||||||
|
for f in ES:0x01 EH:0x04 PAD:0x08 PRIO:0x20; do
|
||||||
|
if [ -n "$f3" -a -z "${f##${f3}*}" ]; then
|
||||||
|
tmp="${f#*:}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$tmp" ]; then
|
||||||
|
F=$(( F | tmp ))
|
||||||
|
f2="${f2#$f3}"
|
||||||
|
f2="${f2#,}"
|
||||||
|
elif [ -z "${f3##[X0-9A-F]*}" ]; then
|
||||||
|
F=$(( F | f3 ))
|
||||||
|
f2="${f2#$f3}"
|
||||||
|
f2="${f2#,}"
|
||||||
|
else
|
||||||
|
echo "Unknown flag(s) '$f3'" >&2
|
||||||
|
usage "${0##*}"
|
||||||
|
die
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "${F##[0-9]*}" ]; then
|
if [ -n "$f2" ]; then
|
||||||
echo "Unknown type '$T'" >&2
|
F="${f2} | ${F}"
|
||||||
usage "${0##*}"
|
|
||||||
die
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
L=$(( L )); T=$(( T )); F=$(( F )); I=$(( I ))
|
L=$(( L )); T=$(( T )); F=$(( F )); I=$(( I ))
|
||||||
|
|
Loading…
Reference in New Issue