- Make dynamic rule allocation non-blocking
- Make dynamic rule hash array allocaion non-blocking
Old behaviour of the hash array allocation is changed in following aspects:
o Old hash array is freed only if new hash array allocation succeed
o Old hash array is reused, if the allocation makes the hash array size
less than the old one
After this change, the static rules iteration is non-blocking, so we will not
have trouble to duplicate static rules (using netmsg forwarding) on all CPUs.
# send_reject() called in the rule iteration may block, but it is the last step
# in the rule iteration, so we don't need to worry about it.