public bool Add(IAdapter adapter, InterfaceIPConfiguration ipConfig) { if (ipBindings[ipConfig.Address] != null) { return(false); } ipBindings[ipConfig.Address] = new IPBinding(adapter, ipConfig); AddInterfaceRoutes(ipConfig); return(true); }
private void AddInterfaceRoutes(InterfaceIPConfiguration ipConfig) { // // Add subnet route // IPv4Network subnet = new IPv4Network(ipConfig.Address, ipConfig.NetMask); routingTable.AddRoute( new RouteEntry(subnet, ipConfig.Address, ipConfig.Address, RouteEntry.DirectlyConnectedMetric, RouteEntry.InterfaceRouteTag) ); // // Add route to gateway // routingTable.AddRoute( new RouteEntry(ipConfig.Gateway, ipConfig.Address, ipConfig.Address, RouteEntry.DirectlyConnectedMetric, RouteEntry.InterfaceRouteTag) ); // // Add default route if none exists // if (routingTable.Lookup(IPv4Network.Default) == null) { routingTable.AddRoute( new RouteEntry(IPv4Network.Default, ipConfig.Gateway, ipConfig.Address, RouteEntry.DefaultRouteMetric, RouteEntry.InterfaceRouteTag) ); } }
private void Flush(InterfaceIPConfiguration ipConfig) { DeleteInterfaceRoutes(ipConfig); ipBindings.Remove(ipConfig.Address); }
private void DeleteInterfaceRoutes(InterfaceIPConfiguration ipConfig) { routingTable.DeleteInterfaceRoutes(ipConfig.Address); }
public IPBinding(IAdapter ad, InterfaceIPConfiguration ipc) { adapter = ad; ipConfig = ipc; }