int IIpTablesModuleInternal.Feed(RuleParser parser, bool not) { switch (parser.GetCurrentArg()) { case OptionMarkLong: var s = parser.GetNextArg().Split(new char[] { '/' }); Mark.Set(not, FlexibleInt.Parse(s[0])); if (s.Length != 1) { Mask = FlexibleInt.Parse(s[1]); } return(1); } return(0); }
int IIpTablesModuleInternal.Feed(RuleParser parser, bool not) { int bits; switch (parser.GetCurrentArg()) { case OptionSetXorMarkLong: bits = FlexibleInt.Parse(parser.GetNextArg()); SetXorMark(bits); return(1); case OptionSetAndMarkLong: bits = FlexibleInt.Parse(parser.GetNextArg()); SetAndMark(bits); return(1); case OptionSetOrMarkLong: bits = FlexibleInt.Parse(parser.GetNextArg()); SetOrMark(bits); return(1); case OptionSetMarkLong: var s1 = parser.GetNextArg().Split('/'); SetMark(FlexibleInt.Parse(s1[0]), s1.Length == 1?DefaultMask:FlexibleInt.Parse(s1[1])); return(1); case OptionSetXMarkLong: var s2 = parser.GetNextArg().Split('/'); SetXMark(FlexibleInt.Parse(s2[0]), s2.Length == 1?DefaultMask:FlexibleInt.Parse(s2[1])); return(1); } return(0); }