Skip to content

Commit 8d0c314

Browse files
liuhangbinkuba-moo
authored andcommitted
tools: ynl-gen: support using pre-defined values in attr checks
Support using pre-defined values in checks so we don't need to use hard code number for the string, binary length. e.g. we have a definition like #define TEAM_STRING_MAX_LEN 32 Which defined in yaml like: definitions: - name: string-max-len type: const value: 32 It can be used in the attribute-sets like attribute-sets: - name: attr-option name-prefix: team-attr-option- attributes: - name: name type: string checks: len: string-max-len With this patch it will be converted to [TEAM_ATTR_OPTION_NAME] = { .type = NLA_STRING, .len = TEAM_STRING_MAX_LEN, } Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Link: https://lore.kernel.org/r/20240311140727.109562-1-liuhangbin@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 46f4017 commit 8d0c314

5 files changed

Lines changed: 6 additions & 4 deletions

File tree

Documentation/netlink/genetlink-c.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ $defs:
1111
minimum: 0
1212
len-or-define:
1313
type: [ string, integer ]
14-
pattern: ^[0-9A-Za-z_]+( - 1)?$
14+
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616
len-or-limit:
1717
# literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.

Documentation/netlink/genetlink-legacy.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ $defs:
1111
minimum: 0
1212
len-or-define:
1313
type: [ string, integer ]
14-
pattern: ^[0-9A-Za-z_]+( - 1)?$
14+
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616
len-or-limit:
1717
# literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.

Documentation/netlink/genetlink.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ $defs:
1111
minimum: 0
1212
len-or-define:
1313
type: [ string, integer ]
14-
pattern: ^[0-9A-Za-z_]+( - 1)?$
14+
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616
len-or-limit:
1717
# literal int or limit based on fixed-width type e.g. u8-min, u16-max, etc.

Documentation/netlink/netlink-raw.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ $defs:
1111
minimum: 0
1212
len-or-define:
1313
type: [ string, integer ]
14-
pattern: ^[0-9A-Za-z_]+( - 1)?$
14+
pattern: ^[0-9A-Za-z_-]+( - 1)?$
1515
minimum: 0
1616

1717
# Schema for specs

tools/net/ynl/ynl-gen-c.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def get_limit(self, limit, default=None):
8080
value = self.checks.get(limit, default)
8181
if value is None:
8282
return value
83+
elif value in self.family.consts:
84+
return c_upper(f"{self.family['name']}-{value}")
8385
if not isinstance(value, int):
8486
value = limit_to_number(value)
8587
return value

0 commit comments

Comments
 (0)