public RouterData()
        {
            StaticRoutes.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(
                delegate(object Sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs EventArgs)
            {
                if (EventArgs.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
                {
                    foreach (var ItemObj in EventArgs.NewItems)
                    {
                        StaticRoutingData Item = (StaticRoutingData)ItemObj;

                        string[] Splits = Item.Destination.Split(new char[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries);

                        foreach (string Value in Splits)
                        {
                            if (Item.Type == RoutingType.Organisation)
                            {
                                VyattaConfigRouting.AddStaticRoutesForOrganization(ConfigRoot, Value.Trim(), this, Item.Interface, Item.Name);
                            }
                            else if (Item.Type == RoutingType.ASN)
                            {
                                int ASN = 0;
                                int.TryParse(Value.Trim(), out ASN);

                                VyattaConfigRouting.AddStaticRoutesForASN(ConfigRoot, ASN, this, Item.Interface, Item.Name);
                            }
                            else if (Item.Type == RoutingType.Netmask)
                            {
                                VyattaConfigRouting.AddStaticRoute(ConfigRoot, this, Value.Trim(), Item.Interface, Item.Name);
                            }
                            else
                            {
                                throw new Exception("Unimplemented type");
                            }
                        }
                    }
                }
                else if (EventArgs.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
                {
                    foreach (var ItemObj in EventArgs.OldItems)
                    {
                        StaticRoutingData Item = (StaticRoutingData)ItemObj;
                        VyattaConfigRouting.DeleteGeneratedStaticRoutes(ConfigRoot, Item.Name);
                    }
                }
            }
                );
        }
Example #2
0
        public bool DoWork(Util.UpdateStatusDelegate SetStatus, Util.ShouldCancelDelegate ShouldCancel)
        {
            if (ShouldCancel())
            {
                return(false);
            }

            SetStatus("Deleting previous auto-generated rules...", 16);
            VyattaConfigRouting.DeleteGeneratedStaticRoutes(Data.ConfigRoot);

            if (ShouldCancel())
            {
                return(false);
            }

            SetStatus("Generating Netflix static routing...", 32);
            //VyattaConfigRouting.AddStaticRoutesForOrganization( Data.ConfigRoot, "Netflix", Data, "Internet", "Netflix" );
            {
                StaticRoutingData NewRoute = new StaticRoutingData();
                NewRoute.Destination = "Netflix";
                NewRoute.Interface   = "eth0";
                NewRoute.Name        = "Netflix";
                NewRoute.Type        = RoutingType.Organisation;
                NewRoute.Action      = StaticRouteAction.ToInterface;

                Data.StaticRoutes.Add(NewRoute);
            }

            if (ShouldCancel())
            {
                return(false);
            }

            SetStatus("Generating BBC static routing...", 48);
            //VyattaConfigRouting.AddStaticRoutesForOrganization( Data.ConfigRoot, "BBC", Data, "Internet", "BBC" );
            {
                StaticRoutingData NewRoute = new StaticRoutingData();
                NewRoute.Destination = "BBC";
                NewRoute.Interface   = "eth0";
                NewRoute.Name        = "BBC";
                NewRoute.Type        = RoutingType.Organisation;
                NewRoute.Action      = StaticRouteAction.ToInterface;

                Data.StaticRoutes.Add(NewRoute);
            }

            if (ShouldCancel())
            {
                return(false);
            }

            SetStatus("Generating Valve static routing...", 56);
            //VyattaConfigRouting.AddStaticRoutesForOrganization( Data.ConfigRoot, "Valve", Data, "Internet", "Valve" );
            {
                StaticRoutingData NewRoute = new StaticRoutingData();
                NewRoute.Destination = "Valve";
                NewRoute.Interface   = "eth0";
                NewRoute.Name        = "Valve";
                NewRoute.Type        = RoutingType.Organisation;
                NewRoute.Action      = StaticRouteAction.ToInterface;

                Data.StaticRoutes.Add(NewRoute);
            }

            if (ShouldCancel())
            {
                return(false);
            }

            SetStatus("Generating Nest static routing...", 80);
            //VyattaConfigRouting.AddStaticRoutesForOrganization( Data.ConfigRoot, "Nest", Data, "Internet", "Nest" );
            {
                StaticRoutingData NewRoute = new StaticRoutingData();
                NewRoute.Destination = "Nest";
                NewRoute.Interface   = "eth0";
                NewRoute.Name        = "Nest";
                NewRoute.Type        = RoutingType.Organisation;
                NewRoute.Action      = StaticRouteAction.ToInterface;

                Data.StaticRoutes.Add(NewRoute);
            }

            SetStatus("Saving new config...", 90);
            Data.NewConfigLines = VyattaConfigUtil.WriteToStringLines(Data.ConfigRoot);

            return(true);
        }