Skip to content
Snippets Groups Projects
user avatar
Vladimir Saveliev authored
b=12749
i=maxim,isaac

First of three patches for the root squash feature

This adds three functions to manipulate with lists of NID ranges:
cfs_parse_nidlist - parses nid range list and
                    creates structure of lists of [lo,hi,stride,net]
                    which can be used to check matching a NID to set of NIDs
cfs_free_nidlist - frees structures allocated on nidlist parsing
cfs_match_nid - check whether a NID matches to set of NIDs
cfs_iswhite - auxiliary function to check if a character is a whitespace

These functions have prefixes cfs_ instead of libcfs_ because of bug #17167.

Example of NID range list: 10.2.0.[1-20/2]@tcp [0,2,6]@elan0 [1,2,4-100/4]@elan1
nidlist syntax:
  <nidlist>         :== <nidrange> [ ' ' <nidrange> ]
  <nidrange>        :== <addrrange> '@' <net>
  <addrrange>       :== '*' |
                        <ipaddr_range> |
                        <numaddr_range>
  <ipaddr_range>    :== <numaddr_range>.<numaddr_range>.<numaddr_range>.<numaddr_range>
  <numaddr_range>   :== <number> |
                        <expr_list>
  <expr_list>       :== '[' <range_expr> [ ',' <range_expr>] ']'
  <range_expr>      :== <number> |
                        <number> '-' <number> |
                        <number> '-' <number> '/' <number>
  <net>             :== <netname> | <netname><number>
  <netname>         :== "lo" | "tcp" | "o2ib" | "cib" | "openib" | "iib" |
                        "vib" | "ra" | "elan" | "gm" | "mx" | "ptl"
  <number>          :== <nonnegative decimal> | <hexadecimal>
320bc2f5
History
Name Last commit Last update