Changeset 717


Ignore:
Timestamp:
06/01/06 16:00:00 (7 years ago)
Author:
mglb1
Message:
  • Improve robustness of routing setup
    • Centralise route addition/removal
    • Check routes periodically
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccsd/private/modules/ccs_monitor_rurallink.py

    r716 r717  
    7070# How often (seconds) to check DNS settings 
    7171DNS_UPDATE_INTERVAL = 60 
     72 
     73# How often (seconds) to check routing 
     74ROUTE_CHECK_INTERVAL = 60 
    7275 
    7376ISP_IF_DISCONNECT = """<a href="/rladmin/isp-disconnect">[Disconnect]</a>""" 
     
    384387    found = False 
    385388    for route in routes: 
    386         if route["network"] == formatIP(network) and \ 
     389        if network=="default" and route["network"]== "0.0.0.0" and \ 
     390                route["netmask"] == "0.0.0.0": 
     391            found = True 
     392            break 
     393        elif route["network"] == formatIP(network) and \ 
    387394                route["netmask"]==formatIP(bitsToNetmask(mask)): 
    388395            found = True 
    389396            break 
    390397    if not found: 
    391         cidr = "%s/%s" % (formatIP(network), mask) 
     398        if network != "default": 
     399            cidr = "%s/%s" % (formatIP(network), mask) 
     400        else: 
     401            cidr = network 
    392402        rv = log_command("/sbin/ip route add %s via %s dev %s 2>&1" % \ 
    393403                (cidr, dest, dev)) 
     
    399409def delRoute(network, mask, dest, dev): 
    400410    """Removes a route from the route table""" 
    401     cidr = "%s/%s" % (formatIP(network), mask) 
     411    if network != "default": 
     412        cidr = "%s/%s" % (formatIP(network), mask) 
     413    else: 
     414        cidr = network 
    402415    rv = log_command("/sbin/ip route del %s via %s dev %s 2>&1" % \ 
    403416            (cidr, dest, dev)) 
     
    23052318    pref_set("rurallink", "isptype", rl_isptype, monitor_prefs) 
    23062319 
    2307     if rl_isptype == ISP_DSL: 
    2308         # Add DSL alias IP 
    2309         log_command("/sbin/ip addr add %s/%s dev %s 2>&1" % \ 
    2310             (DSL_CPE_IP, DSL_NETMASK, int_ifname)) 
    2311         log_command("/sbin/ip route add default via %s dev %s 2>&1" % \ 
    2312             (DSL_MODEM_IP, int_ifname)) 
    2313     else: 
    2314         # Remove DSL alias IP 
    2315         log_command("/sbin/ip addr del %s/%s dev %s &>/dev/null" % \ 
    2316             (DSL_CLE_IP, DSL_NETMASK, if_ifname)) 
    2317         log_command("/sbin/ip route del default via %s dev %s &>/dev/null" % \ 
    2318             (DSL_MODEM_IP, int_ifname)) 
     2320    # Setup routes 
     2321    initialiseISPRoutes() 
    23192322 
    23202323def updateISP(username, password): 
     
    24182421    else: 
    24192422        raise ccs_rurallink_error("Unknown ISP type passed to ISPDisconnect!") 
     2423 
     2424def initialiseISPRoutes(): 
     2425    global rl_isptype, int_ifname 
     2426     
     2427    if rl_isptype == ISP_DSL: 
     2428        # Add DSL alias IP 
     2429        log_command("/sbin/ip addr add %s/%s dev %s &>/dev/null" % \ 
     2430                (DSL_CPE_IP, DSL_NETMASK, int_ifname)) 
     2431        addRoute("default", 0, DSL_MODEM_IP, int_ifname) 
     2432    else: 
     2433        # Remove DSL alias IP 
     2434        log_command("/sbin/ip addr del %s/%s dev %s &>/dev/null" % \ 
     2435                (DSL_CPE_IP, DSL_NETMASK, int_ifname)) 
     2436        delRoute("default", 0, DSL_MODEM_IP, int_ifname) 
     2437 
     2438@registerRecurring(ROUTE_CHECK_INTERVAL) 
     2439def checkRoutes(): 
     2440    """Checks that the routing is setup correctly""" 
     2441 
     2442    if isMasterNode(): 
     2443        initialiseISPRoutes() 
     2444    initialiseClientRoutes() 
    24202445 
    24212446@registerRecurring(DNS_UPDATE_INTERVAL) 
     
    25552580        # Retrieve the ISP we're connecting to 
    25562581        rl_isptype = pref_get("rurallink", "isptype", monitor_prefs, ISP_BCL) 
    2557         if rl_isptype == ISP_DSL: 
    2558             # Add DSL alias IP 
    2559             log_command("/sbin/ip addr add %s/%s dev %s 2>&1" % \ 
    2560                 (DSL_CPE_IP, DSL_NETMASK, int_ifname)) 
    2561             log_command("/sbin/ip route add default via %s dev %s 2>&1" % \ 
    2562                 (DSL_MODEM_IP, int_ifname)) 
    2563         else: 
    2564             # Remove DSL alias IP 
    2565             log_command("/sbin/ip addr del %s/%s dev %s &>/dev/null" % \ 
    2566                 (DSL_CPE_IP, DSL_NETMASK, int_ifname)) 
    2567             log_command("/sbin/ip route del default via %s dev %s " \ 
    2568                 "&>/dev/null" % (DSL_MODEM_IP, int_ifname)) 
     2582        initialiseISPRoutes() 
    25692583         
    25702584        # Initialise the status map 
Note: See TracChangeset for help on using the changeset viewer.