Skip to content
Snippets Groups Projects
  • Vladimir Saveliev's avatar
    320bc2f5
    Branch HEAD · 320bc2f5
    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
    Branch HEAD
    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>