Whamcloud - gitweb
Branch HEAD
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>