Whamcloud - gitweb
Branch HEAD
authorvs <vs>
Thu, 27 Nov 2008 01:55:35 +0000 (01:55 +0000)
committervs <vs>
Thu, 27 Nov 2008 01:55:35 +0000 (01:55 +0000)
commit320bc2f5e1250948790282e156583ccf98bedc33
tree364c5e324b9e938baf5884124c27f896e02deef4
parentbe65cc149092145e2d88e7a4f986fa203c086085
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>
libcfs/include/libcfs/libcfs_private.h
libcfs/libcfs/nidstrings.c
lnet/lnet/config.c