Commit 748c7c82 authored by Quentin Monnet's avatar Quentin Monnet Committed by Daniel Borkmann

bpf: fix script for generating man page on BPF helpers

The script broke on parsing function prototype for bpf_strtoul(). This
is because the last argument for the function is a pointer to an
"unsigned long". The current version of the script only accepts "const"
and "struct", but not "unsigned", at the beginning of argument types
made of several words.

One solution could be to add "unsigned" to the list, but the issue could
come up again in the future (what about "long int"?). It turns out we do
not need to have such restrictions on the words: so let's simply accept
any series of words instead.
Reported-by: default avatarYonghong Song <yhs@fb.com>
Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
Acked-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 98583812
#!/usr/bin/python3 #!/usr/bin/python3
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
# #
# Copyright (C) 2018 Netronome Systems, Inc. # Copyright (C) 2018-2019 Netronome Systems, Inc.
# In case user attempts to run with Python 2. # In case user attempts to run with Python 2.
from __future__ import print_function from __future__ import print_function
...@@ -39,7 +39,7 @@ class Helper(object): ...@@ -39,7 +39,7 @@ class Helper(object):
Break down helper function protocol into smaller chunks: return type, Break down helper function protocol into smaller chunks: return type,
name, distincts arguments. name, distincts arguments.
""" """
arg_re = re.compile('((const )?(struct )?(\w+|...))( (\**)(\w+))?$') arg_re = re.compile('((\w+ )*?(\w+|...))( (\**)(\w+))?$')
res = {} res = {}
proto_re = re.compile('(.+) (\**)(\w+)\(((([^,]+)(, )?){1,5})\)$') proto_re = re.compile('(.+) (\**)(\w+)\(((([^,]+)(, )?){1,5})\)$')
...@@ -54,8 +54,8 @@ class Helper(object): ...@@ -54,8 +54,8 @@ class Helper(object):
capture = arg_re.match(a) capture = arg_re.match(a)
res['args'].append({ res['args'].append({
'type' : capture.group(1), 'type' : capture.group(1),
'star' : capture.group(6), 'star' : capture.group(5),
'name' : capture.group(7) 'name' : capture.group(6)
}) })
return res return res
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment