Skip to content

Commit 1768d8a

Browse files
donaldhkuba-moo
authored andcommitted
tools/net/ynl: Add support for create flags
Add support for using NLM_F_REPLACE, _EXCL, _CREATE and _APPEND flags in requests. Signed-off-by: Donald Hunter <[email protected]> Reviewed-by: Jacob Keller <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 0493e56 commit 1768d8a

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

tools/net/ynl/cli.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import pprint
77
import time
88

9-
from lib import YnlFamily
9+
from lib import YnlFamily, Netlink
1010

1111

1212
def main():
@@ -19,6 +19,14 @@ def main():
1919
parser.add_argument('--dump', dest='dump', type=str)
2020
parser.add_argument('--sleep', dest='sleep', type=int)
2121
parser.add_argument('--subscribe', dest='ntf', type=str)
22+
parser.add_argument('--replace', dest='flags', action='append_const',
23+
const=Netlink.NLM_F_REPLACE)
24+
parser.add_argument('--excl', dest='flags', action='append_const',
25+
const=Netlink.NLM_F_EXCL)
26+
parser.add_argument('--create', dest='flags', action='append_const',
27+
const=Netlink.NLM_F_CREATE)
28+
parser.add_argument('--append', dest='flags', action='append_const',
29+
const=Netlink.NLM_F_APPEND)
2230
args = parser.parse_args()
2331

2432
if args.no_schema:
@@ -37,7 +45,7 @@ def main():
3745
time.sleep(args.sleep)
3846

3947
if args.do:
40-
reply = ynl.do(args.do, attrs)
48+
reply = ynl.do(args.do, attrs, args.flags)
4149
pprint.PrettyPrinter().pprint(reply)
4250
if args.dump:
4351
reply = ynl.dump(args.dump, attrs)

tools/net/ynl/lib/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from .nlspec import SpecAttr, SpecAttrSet, SpecEnumEntry, SpecEnumSet, \
44
SpecFamily, SpecOperation
5-
from .ynl import YnlFamily
5+
from .ynl import YnlFamily, Netlink
66

77
__all__ = ["SpecAttr", "SpecAttrSet", "SpecEnumEntry", "SpecEnumSet",
8-
"SpecFamily", "SpecOperation", "YnlFamily"]
8+
"SpecFamily", "SpecOperation", "YnlFamily", "Netlink"]

tools/net/ynl/lib/ynl.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class Netlink:
3535
NLM_F_ACK = 4
3636
NLM_F_ROOT = 0x100
3737
NLM_F_MATCH = 0x200
38+
39+
NLM_F_REPLACE = 0x100
40+
NLM_F_EXCL = 0x200
41+
NLM_F_CREATE = 0x400
3842
NLM_F_APPEND = 0x800
3943

4044
NLM_F_CAPPED = 0x100
@@ -654,10 +658,12 @@ def operation_do_attributes(self, name):
654658

655659
return op['do']['request']['attributes'].copy()
656660

657-
def _op(self, method, vals, dump=False):
661+
def _op(self, method, vals, flags, dump=False):
658662
op = self.ops[method]
659663

660664
nl_flags = Netlink.NLM_F_REQUEST | Netlink.NLM_F_ACK
665+
for flag in flags or []:
666+
nl_flags |= flag
661667
if dump:
662668
nl_flags |= Netlink.NLM_F_DUMP
663669

@@ -716,8 +722,8 @@ def _op(self, method, vals, dump=False):
716722
return rsp[0]
717723
return rsp
718724

719-
def do(self, method, vals):
720-
return self._op(method, vals)
725+
def do(self, method, vals, flags):
726+
return self._op(method, vals, flags)
721727

722728
def dump(self, method, vals):
723-
return self._op(method, vals, dump=True)
729+
return self._op(method, vals, [], dump=True)

0 commit comments

Comments
 (0)