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);
        }
예제 #2
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);
        }