示例#1
0
def lisp_itr_process_nonce_ipc(ipc):
    x, opcode, rloc_str, nonce = ipc.split("%")
    nonce = int(nonce, 16)

    echo_nonce = lisp.lisp_get_echo_nonce(None, rloc_str)
    if (echo_nonce == None): echo_nonce = lisp.lisp_echo_nonce(rloc_str)

    #
    # If we are in request-nonce mode, exit it, so we can echo the nonce the
    # other side is requesting.
    #
    if (opcode == "R"):
        echo_nonce.request_nonce_rcvd = nonce
        echo_nonce.last_request_nonce_rcvd = lisp.lisp_get_timestamp()
        echo_nonce.echo_nonce_sent = nonce
        echo_nonce.last_new_echo_nonce_sent = lisp.lisp_get_timestamp()
        lisp.lprint("Start echo-nonce mode for {}, nonce 0x{}".format( \
            lisp.red(echo_nonce.rloc_str, False), lisp.lisp_hex_string(nonce)))
    #endif

    if (opcode == "E"):
        echo_nonce.echo_nonce_rcvd = nonce
        echo_nonce.last_echo_nonce_rcvd = lisp.lisp_get_timestamp()

        if (echo_nonce.request_nonce_sent == nonce):
            en = lisp.bold("echoed nonce", False)
            lisp.lprint("Received {} {} from {}".format(en,
                lisp.lisp_hex_string(nonce), 
                lisp.red(echo_nonce.rloc_str, False)))

            echo_nonce.request_nonce_sent = None
            lisp.lprint("Stop request-nonce mode for {}".format( \
                lisp.red(echo_nonce.rloc_str, False)))
            echo_nonce.last_good_echo_nonce_rcvd = lisp.lisp_get_timestamp()
        else:
            rns = "none"
            if (echo_nonce.request_nonce_sent):
                rns = lisp.lisp_hex_string(echo_nonce.request_nonce_sent)
            #endif
            lisp.lprint(("Received echo-nonce 0x{} from {}, but request-" + \
                "nonce is {}").format(lisp.lisp_hex_string(nonce),
                lisp.red(echo_nonce.rloc_str, False), rns))
        #endif
    #endif
    return
示例#2
0
def lisp_timeout_pubsub():
    lisp.lisp_set_exception()

    #
    # Return quickly if inject mode is not enabled.
    #
    lisp_ms_scale_inject()

    now = lisp.lisp_get_timestamp()

    delete_list = []
    for e in lisp.lisp_pubsub_cache:
        for pubsub in lisp.lisp_pubsub_cache[e].values():
            ttl = pubsub.ttl * 60
            if (pubsub.uptime + ttl > now): continue
            delete_list.append([e, pubsub.xtr_id])
        #endfor
    #endfor

    #
    # Remove entries from delete queue.
    #
    for e, xtr_id in delete_list:
        eid = lisp.green(e, False)
        lisp.lprint("Pubsub state {} for xtr-id 0x{} has {}".format(
            eid, lisp.lisp_hex_string(xtr_id), lisp.bold("timed out", False)))

        #
        # Remove entry from dictionary array. And explictly free memory.
        #
        entry = lisp.lisp_pubsub_cache[e][xtr_id]
        lisp.lisp_pubsub_cache[e].pop(xtr_id)
        del (entry)

        #
        # If not more subscriptions for this EID-prefix, remove EID-prefix
        # from parent dictionary array.
        #
        if (len(lisp.lisp_pubsub_cache[e]) == 0):
            lisp.lisp_pubsub_cache.pop(e)
        #endif
    #endfor

    #
    # Restart periodic timer.
    #
    lisp_pubsub_timer = threading.Timer( \
        lisp.LISP_PUBSUB_TIMEOUT_CHECK_INTERVAL, lisp_timeout_pubsub, [])
    lisp_pubsub_timer.start()
    return
示例#3
0
def lisp_ms_show_site_command(parameter):

    #
    # Do detailed display.
    #
    if (parameter != ""):
        if (parameter.find("@lookup") != -1):
            parameter = parameter.split("@")
            return (lisp_ms_show_site_lookup(parameter[0]))
        #endif
        eid = parameter.split("%")[0]
        group = parameter.split("%")[1]
        return (lisp_ms_show_site_detail_command(eid, group))
    #endif

    #
    # Top part of display has the form for doing a specific lookup.
    #
    banner = "Enter EID for Site-Cache lookup:"
    input_rectangle = \
        lisp.lisp_eid_help_hover('<input type="text" name="eid" />')
    output = '''
        <form action="/lisp/show/site/lookup" method="post">
        <i><font face="Courier New" size="3">
        {} {}
        <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" />
        </font></i></form>
    '''.format(lisp.lisp_print_sans(banner), input_rectangle)

    #
    # First display auth-prefix and map-server-peer configuration, if any.
    #
    if (lisp.lisp_ddt_cache.cache_count != 0):
        output += lisp_ms_show_ddt_entries()
    #endif

    #
    # Do table display.
    #
    hover = ("{} sites & {} eid-prefixes configured\n{} eid-prefixes " + \
        "registered").format(len(lisp_sites_by_name),
        lisp.lisp_sites_by_eid.cache_size(), lisp.lisp_registered_count)

    title = lisp.lisp_span("LISP-MS Site Information:", hover)
    output += lispconfig.lisp_table_header(title, "Site Name",
                                           "EID-Prefix or (S,G)", "Registered",
                                           "Last Registerer",
                                           "Last Registered",
                                           "First Registered",
                                           "Registration Flags")

    for site_name in lisp_sites_by_name_sorted:
        site = lisp_sites_by_name[site_name]
        first = True
        for key in site.allowed_prefixes_sorted:
            site_eid = site.allowed_prefixes[key]

            output = lisp_display_site_eid_entry(site_eid, site, first, output)
            if (first): first = False

            for ms_site_eid in site_eid.more_specific_registrations:
                output = lisp_display_site_eid_entry(ms_site_eid, site, first,
                                                     output)
            #endfor
        #endfor
    #endfor

    output += lispconfig.lisp_table_footer()

    #
    # Show NAT-traversal lisp_nat_state_info table for an RTR. In the future
    # show this. Problem know is that the lisp-core process will process
    # Info-Requests for the control-plane port 4342.
    #
    # output = lispconfig.lisp_display_nat_info(output, "Control")

    if (lisp.lisp_pubsub_cache == {}): return (output)

    #
    # Display pubsub cache.
    #
    title = "LISP-MS Subscriber Information:"
    output += lispconfig.lisp_table_header(title, "EID-prefix",
                                           "Uptime<br>TTL", "Subscriber RLOC",
                                           "xTR-ID", "Nonce",
                                           "Map-Notifies<br>Sent")

    for e in lisp.lisp_pubsub_cache:
        eid = e
        for pubsub in lisp.lisp_pubsub_cache[e].values():
            rloc_str = pubsub.itr.print_address_no_iid() + ":" + \
                str(pubsub.port)
            ut = lisp.lisp_print_elapsed(pubsub.uptime) + "<br>" + \
                str(pubsub.ttl) + " mins"

            xtr_id = "--"
            if (pubsub.xtr_id != None):
                xtr_id = "0x" + lisp.lisp_hex_string(pubsub.xtr_id)
            #endif
            nonce = "0x" + lisp.lisp_hex_string(pubsub.nonce)
            c = pubsub.map_notify_count
            output += lispconfig.lisp_table_row(eid, ut, rloc_str, xtr_id,
                                                nonce, c)
            eid = ""
        #endfor
    #endfor
    output += lispconfig.lisp_table_footer()
    return (output)
示例#4
0
def lisp_ms_show_site_detail_command(eid_key, group_key):

    eid = lisp.lisp_address(lisp.LISP_AFI_NONE, "", 0, 0)
    if (eid_key):
        if (eid_key == "[0]/0"):
            eid.store_iid_range(0, 0)
        else:
            eid.store_prefix(eid_key)
        #endif
    #endif
    group = lisp.lisp_address(lisp.LISP_AFI_NONE, "", 0, 0)
    if (group_key): group.store_prefix(group_key)

    eid_str = lisp.lisp_print_eid_tuple(eid, group)
    eid_str = lisp.lisp_print_cour(eid_str)

    #
    # Do longest match lookup. We do this so prefix slashes are not in URLs.
    #
    site_eid = lisp.lisp_site_eid_lookup(eid, group, True)
    if (site_eid == None):
        output = "Could not find EID {} in site cache".format(eid_str)
        return (output)
    #endif

    indent4 = lisp.space(4)
    indent8 = lisp.space(8)
    indent12 = lisp.space(12)

    yesno = lisp.green("yes", True) if site_eid.registered else \
        lisp.red("no", True)

    output = '<font face="Sans-Serif">'

    sn = lisp.lisp_print_cour(site_eid.site.site_name)
    si = lisp.lisp_print_cour(str(site_eid.site_id))
    xi = "0" if site_eid.xtr_id == 0 else lisp.lisp_hex_string(site_eid.xtr_id)
    xi = lisp.lisp_print_cour("0x" + xi)
    fr = lisp.lisp_print_elapsed(site_eid.first_registered)
    lr = lisp.lisp_print_elapsed(site_eid.last_registered)
    if (time.time() - site_eid.last_registered >= (site_eid.register_ttl / 2)
            and lr != "never"):
        lr = lisp.red(lr, True)
    #endif
    if (site_eid.last_registerer.afi == lisp.LISP_AFI_NONE):
        reger = "none"
    else:
        reger = site_eid.last_registerer.print_address()
    #endif
    reger = lisp.lisp_print_cour(reger)
    shutdown = ", " + lisp.lisp_print_cour("site is in admin-shutdown") if \
        site_eid.site.shutdown else ""
    ams = ", accepting more specifics" if site_eid.accept_more_specifics \
        else ""
    if (ams == "" and site_eid.dynamic): ams = ", dynamic"
    output += '''Site name: {}, EID-prefix: {}, registered: {}{}{}
        <br>'''.format(sn, eid_str, yesno, ams, shutdown)

    output += "{}Description: {}<br>".format(
        indent4, lisp.lisp_print_cour(site_eid.site.description))
    output += "{}Last registerer: {}, xTR-ID: {}, site-ID: {}<br>".format( \
        indent4, reger, xi, si)

    flags = site_eid.print_flags(False)
    flags = lisp.lisp_print_cour(flags)
    auth_type = "none"
    if (site_eid.registered):
        auth_type = "sha1" if (site_eid.auth_sha1_or_sha2) else "sha2"
    #endif
    output += ("{}First registered: {}, last registered: {}, auth-type: " + \
        "{}, registration flags: {}<br>").format(indent4,
         lisp.lisp_print_cour(fr), lisp.lisp_print_cour(lr),
         lisp.lisp_print_cour(auth_type), flags)

    ttl = lisp.lisp_print_cour(str(site_eid.register_ttl) + " seconds")
    output += "{}{} registration timeout TTL: {}<br>".format( \
        indent4, "Registered" if site_eid.use_register_ttl_requested else \
        "Default", ttl)

    #
    # First print a policy line, if one is configured for this site-eid.
    #
    if (site_eid.policy):
        p = lisp.lisp_print_cour(site_eid.policy)
        output += "{}Apply policy: '{}'<br>".format(indent4, p)
    #endif

    #
    # Show proxy-reply settings.
    #
    yesno = "yes" if site_eid.force_proxy_reply else "no"
    yesno = lisp.lisp_print_cour(yesno)
    output += "{}Forcing proxy Map-Reply: {}<br>".format(indent4, yesno)

    if (site_eid.force_ttl != None):
        ttl = lisp.lisp_print_cour(str(site_eid.force_ttl) + " seconds")
        output += "{}Forced proxy Map-Reply TTL: {}<br>".format( \
            indent4, ttl)
    #endif

    yesno = "yes" if site_eid.force_nat_proxy_reply else "no"
    yesno = lisp.lisp_print_cour(yesno)
    output += "{}Forcing proxy Map-Reply for xTRs behind NATs: {}<br>". \
        format(indent4, yesno)

    yesno = "yes" if site_eid.pitr_proxy_reply_drop else "no"
    yesno = lisp.lisp_print_cour(yesno)
    output += "{}Send drop-action proxy Map-Reply to PITR: {}<br>".format( \
        indent4, yesno)

    action = "not configured" if site_eid.proxy_reply_action == "" else \
        site_eid.proxy_reply_action
    action = lisp.lisp_print_cour(action)
    output += "{}Proxy Map-Reply action: {}<br>".format(indent4, action)

    if (site_eid.force_proxy_reply and site_eid.echo_nonce_capable):
        yes = lisp.lisp_print_cour("yes")
        output += "{}RLOCs are echo-nonce capable: {}<br>".format(indent4, yes)
    #endif

    yesno = "yes" if site_eid.require_signature else "no"
    yesno = lisp.lisp_print_cour(yesno)
    output += "{}Require signatures: {}<br>".format(indent4, yesno)

    #
    # Print configured allowed RLOC-sets, if any.
    #
    any_rloc = "any" if len(site_eid.site.allowed_rlocs) == 0 else ""
    if (any_rloc != ""): any_rloc = lisp.lisp_print_cour(any_rloc)
    output += "{}Allowed RLOC-set: {}<br>".format(indent4, any_rloc)
    if (any_rloc == ""):
        for rloc in site_eid.site.allowed_rlocs.values():
            a = lisp.lisp_print_cour(rloc.rloc.print_address())
            s = lisp.lisp_print_cour(rloc.print_state())
            up = lisp.lisp_print_cour(str(rloc.priority))
            uw = lisp.lisp_print_cour(str(rloc.weight))
            mp = lisp.lisp_print_cour(str(rloc.mpriority))
            mw = lisp.lisp_print_cour(str(rloc.mweight))
            rn = rloc.print_rloc_name(True)
            if (rn != ""): rn = ", " + rn

            output += '''{}{}, state: {}, up/uw/mp/mw: {}/{}/{}/{}{}<br>'''. \
                format(indent8, a, s, up, uw, mp, mw, rn)
        #endfor
    #endif

    none = "none" if len(site_eid.registered_rlocs) == 0 else ""
    if (none != ""): none = lisp.lisp_print_cour(none)
    output += "<br>Registered RLOC-set ({}): {}<br>".format("merge-semantics" \
        if (site_eid.merge_register_requested) else "replacement-semantics",
        none)
    if (none == ""):
        for rloc in site_eid.registered_rlocs:
            a = lisp.lisp_print_cour(rloc.rloc.print_address())
            s = lisp.lisp_print_cour(rloc.print_state())
            up = lisp.lisp_print_cour(str(rloc.priority))
            uw = lisp.lisp_print_cour(str(rloc.weight))
            mp = lisp.lisp_print_cour(str(rloc.mpriority))
            mw = lisp.lisp_print_cour(str(rloc.mweight))
            rn = rloc.print_rloc_name(True)
            if (rn != ""): rn = ", " + rn

            output += '''{}{}, state: {}, up/uw/mp/mw: {}/{}/{}/{}{}<br>'''.\
                format(indent4, a, s, up, uw, mp, mw, rn)
            if (rloc.geo):
                geo = lisp.lisp_print_cour(rloc.geo.print_geo_url())
                output += "{}geo: {}<br>".format(indent12, geo)
            #endif
            if (rloc.elp):
                elp = lisp.lisp_print_cour(rloc.elp.print_elp(False))
                output += "{}elp: {}<br>".format(indent12, elp)
            #endif
            if (rloc.rle):
                rle = lisp.lisp_print_cour(rloc.rle.print_rle(True))
                output += "{}rle: {}<br>".format(indent12, rle)
            #endif
            if (rloc.json):
                json = lisp.lisp_print_cour(rloc.json.print_json(True))
                output += "{}json: {}<br>".format(indent12, json)
            #endif
        #endfor
    #endif

    none = "none" if len(site_eid.individual_registrations) == 0 else ""
    if (none == "none"):
        none = lisp.lisp_print_cour(none)
    elif (site_eid.inconsistent_registration):
        none = lisp.red("inconsistent registrations", True)
        none = lisp.lisp_print_cour(none)
    #endif
    output += "<br>Individual registrations: {}<br>".format(none)

    for site_eid in site_eid.individual_registrations.values():
        yesno = lisp.green("yes", True) if site_eid.registered else \
            lisp.red("no", True)
        auth_type = "sha1" if (site_eid.auth_sha1_or_sha2) else "sha2"
        auth_type = lisp.lisp_print_cour(auth_type)
        flags = site_eid.print_flags(False)
        flags = lisp.lisp_print_cour(flags)
        a = lisp.lisp_print_cour(site_eid.last_registerer.print_address())
        fr = lisp.lisp_print_elapsed(site_eid.first_registered)
        fr = lisp.lisp_print_cour(fr)
        lr = lisp.lisp_print_elapsed(site_eid.last_registered)
        if (time.time() - site_eid.last_registered >=
            (site_eid.register_ttl / 2) and lr != "never"):
            lr = lisp.red(lr, True)
        #endif
        lr = lisp.lisp_print_cour(lr)
        si = lisp.lisp_print_cour(str(site_eid.site_id))
        xi = lisp.lisp_print_cour(lisp.lisp_hex_string(site_eid.xtr_id))

        output += '''
            {}Registerer: {}, xTR-ID: 0x{}, site-id: {}, registered: {}<br>
            {}First registered: {}, last registered: {}, auth-type: {}, 
            registration flags: {}<br>
        '''.format(indent4, a, xi, si, yesno, indent4, fr, lr, auth_type,
                   flags)

        none = "none" if len(site_eid.registered_rlocs) == 0 else ""
        none = lisp.lisp_print_cour(none)
        output += "{}Registered RLOC-set: {}<br>".format(indent4, none)

        for rloc in site_eid.registered_rlocs:
            a = lisp.lisp_print_cour(rloc.rloc.print_address())
            s = lisp.lisp_print_cour(rloc.print_state())
            up = lisp.lisp_print_cour(str(rloc.priority))
            uw = lisp.lisp_print_cour(str(rloc.weight))
            mp = lisp.lisp_print_cour(str(rloc.mpriority))
            mw = lisp.lisp_print_cour(str(rloc.mweight))
            rn = rloc.print_rloc_name(True)
            if (rn != ""): rn = ", " + rn

            output += '''{}{}, state: {}, up/uw/mp/mw: {}/{}/{}/{}{}<br>'''.\
                format(indent8, a, s, up, uw, mp, mw, rn)
            if (rloc.geo):
                geo = lisp.lisp_print_cour(rloc.geo.print_geo_url())
                output += "{}geo: {}<br>".format(indent12, geo)
            #endif
            if (rloc.elp):
                elp = lisp.lisp_print_cour(rloc.elp.print_elp(False))
                output += "{}elp: {}<br>".format(indent12, elp)
            #endif
            if (rloc.rle):
                rle = lisp.lisp_print_cour(rloc.rle.print_rle(True))
                output += "{}rle: {}<br>".format(indent12, rle)
            #endif
            if (rloc.json):
                json = lisp.lisp_print_cour(rloc.json.print_json(True))
                output += "{}json: {}<br>".format(indent12, json)
            #endif
        #endfor
        output += "<br>"
    #endif
    output += "</font>"
    return (output)
示例#5
0
def oO0o0o0oo(parameter):
    if 32 - 32: OOooOOo
    if 42 - 42: IiII * O0 % i1IIi.OOooOOo / o0oOOo0O0Ooo
    if 32 - 32: I1IiiI * Oo0Ooo
    if 78 - 78: OOooOOo - OoooooooOO - I1ii11iIi11i / ooOoO0o / II111iiii
    if (parameter != ""):
        return (oOO00O(parameter))
        if 29 - 29: I1IiiI % I1IiiI
        if 94 - 94: iIii1I11I1II1 / Oo0Ooo % iII111i * iII111i * II111iiii
        if 29 - 29: OoO0O00 + OoOoOO00 / o0oOOo0O0Ooo / OOooOOo * iIii1I11I1II1
        if 62 - 62: OOooOOo / oO0o - OoO0O00.I11i
        if 11 - 11: I1ii11iIi11i.OoO0O00 * IiII * OoooooooOO + ooOoO0o
    IiII111i1i11 = "Enter EID for Referral-Cache lookup:"
    i111iIi1i1II1 = lisp.lisp_eid_help_hover(
        '<input type="text" name="eid" />')
    if 86 - 86: iIii1I11I1II1 / OoOoOO00.II111iiii
    Oo0O0oooo = '''
        <form action="/lisp/show/referral/lookup" method="post">
        <i><font face="Courier New" size="3">
        {} {}
        <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" />
        </font></i></form>
    '''.format(lisp.lisp_print_sans(IiII111i1i11), i111iIi1i1II1)
    if 19 - 19: I1ii11iIi11i % OoooooooOO % IiII * o0oOOo0O0Ooo % O0
    if 67 - 67: I1IiiI.i1IIi
    if 27 - 27: ooOoO0o % I1IiiI
    if 73 - 73: OOooOOo
    ooO = len(lisp.lisp_ddt_map_requestQ)
    if (ooO != 0):
        Ooo0oOooo0 = "{} entries in map-request queue".format(ooO)
        oOOOoo00 = lisp.lisp_span("LISP-MR Map-Request Queue:", Ooo0oOooo0)
        if 9 - 9: O0 % O0 - o0oOOo0O0Ooo
        Oo0O0oooo += lispconfig.lisp_table_header(
            oOOOoo00, "EID-Prefix or (S,G)", "Nonce", "Uptime",
            "Map-Request Source", "Retry Count", "Tried DDT-Root",
            "Last Request Sent To", "Last Map-Referral EID-Prefix")
        if 51 - 51: I1IiiI.iIii1I11I1II1 - I1ii11iIi11i / O0
        for OOOoO00 in lisp.lisp_ddt_map_requestQ:
            IIiIi11i1i = lisp.lisp_ddt_map_requestQ[OOOoO00]
            I1II1I11I1I = lisp.lisp_print_elapsed(IIiIi11i1i.uptime)
            OoOO0o = IIiIi11i1i.last_request_sent_to
            OoOO0o = "--" if (OoOO0o
                              == None) else OoOO0o.print_address_no_iid()
            if 1 - 1: II111iiii
            O0oOo00o = IIiIi11i1i.itr
            O0oOo00o = "--" if (O0oOo00o == None) else (
                O0oOo00o.print_address_no_iid() +
                "<br>({}ITR)".format("P" if IIiIi11i1i.from_pitr else ""))
            if 81 - 81: IiII % i1IIi.iIii1I11I1II1
            if 4 - 4: i11iIiiIii % OoO0O00 % i1IIi / IiII
            I11iI = IIiIi11i1i.last_cached_prefix[0]
            ooOoo = IIiIi11i1i.last_cached_prefix[1]
            I1III1111iIi = "--" if (
                I11iI == None) else lisp.lisp_print_eid_tuple(I11iI, ooOoo)
            if 38 - 38: iII111i + I11i / I1Ii111 % ooOoO0o - I1ii11iIi11i
            if 14 - 14: oO0o / I1Ii111
            Oo0O0oooo += lispconfig.lisp_table_row(
                IIiIi11i1i.print_eid_tuple(),
                "0x" + lisp.lisp_hex_string(IIiIi11i1i.nonce), I1II1I11I1I,
                O0oOo00o, IIiIi11i1i.retry_count,
                "yes" if IIiIi11i1i.tried_root else "no", OoOO0o, I1III1111iIi)
            if 85 - 85: I11i
            if 20 - 20: oO0o % IiII
        Oo0O0oooo += lispconfig.lisp_table_footer()
        if 19 - 19: I1ii11iIi11i % IiII + ooOoO0o / I1Ii111.ooOoO0o
        if 12 - 12: i1IIi + i1IIi - I1ii11iIi11i * Oo0Ooo % Oo0Ooo - II111iiii
    Ooo0oOooo0 = "{} entries in referral-cache".format(
        lisp.lisp_referral_cache.cache_size())
    if 52 - 52: ooOoO0o.iII111i + I1Ii111
    oOOOoo00 = lisp.lisp_span("LISP-MR Referral-Cache:", Ooo0oOooo0)
    if 38 - 38: i1IIi - II111iiii.I1Ii111
    Oo0O0oooo += lispconfig.lisp_table_header(
        oOOOoo00, "EID-Prefix or (S,G)", "Uptime", "Expires<br>TTL",
        "Referral Type", "Map-Referral Source",
        "Referral Address<br>Node Status", "Priority<br>Weight",
        "Map-Requests Sent<br>No Responses")
    if 58 - 58: I1IiiI.iII111i + OoOoOO00
    Oo0O0oooo = lisp.lisp_referral_cache.walk_cache(oooO0, Oo0O0oooo)
    if 66 - 66: iII111i / oO0o * OoooooooOO + OoooooooOO % I11i
    Oo0O0oooo += lispconfig.lisp_table_footer()
    return (Oo0O0oooo)
    if 49 - 49: oO0o - i11iIiiIii.I1Ii111 * Ii1I % iII111i + i1IIi
    if 71 - 71: o0oOOo0O0Ooo
    if 38 - 38: oO0o % OoOoOO00 + I1ii11iIi11i.i11iIiiIii
    if 53 - 53: i11iIiiIii * iII111i
    if 68 - 68: iIii1I11I1II1 * iIii1I11I1II1.o0oOOo0O0Ooo / II111iiii % Oo0Ooo
    if 38 - 38: ooOoO0o - OOooOOo / iII111i
    if 66 - 66: O0 % I1ii11iIi11i + i11iIiiIii.OoOoOO00 / Ii1I + I1ii11iIi11i
示例#6
0
def lisp_mr_show_referral_cache_command(parameter):

    #
    # Do lookup if there is a parameter supplied.
    #
    if (parameter != ""):
        return (lisp_mr_show_referral_cache_lookup(parameter))
    #endif

    #
    # Top part of display has the form for doing a specific lookup.
    #
    banner = "Enter EID for Referral-Cache lookup:"
    input_rectangle = \
        lisp.lisp_eid_help_hover('<input type="text" name="eid" />')
    output = '''
        <form action="/lisp/show/referral/lookup" method="post">
        <i><font face="Courier New" size="3">
        {} {}
        <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" />
        </font></i></form>
    '''.format(lisp.lisp_print_sans(banner), input_rectangle)

    #
    # Display the DDT Map-Request queue contents if anything is in it.
    #
    queue_size = len(lisp.lisp_ddt_map_requestQ)
    if (queue_size != 0):
        hover = "{} entries in map-request queue".format(queue_size)
        title = lisp.lisp_span("LISP-MR Map-Request Queue:", hover)

        output += lispconfig.lisp_table_header(title, "EID-Prefix or (S,G)",
                                               "Nonce", "Uptime",
                                               "Map-Request Source",
                                               "Retry Count", "Tried DDT-Root",
                                               "Last Request Sent To",
                                               "Last Map-Referral EID-Prefix")

        for key in lisp.lisp_ddt_map_requestQ:
            mr = lisp.lisp_ddt_map_requestQ[key]
            ut = lisp.lisp_print_elapsed(mr.uptime)
            last_sent = mr.last_request_sent_to
            last_sent = "--" if (last_sent == None) else \
                last_sent.print_address_no_iid()
            itr = mr.itr
            itr = "--" if (itr == None) else (itr.print_address_no_iid() + \
                "<br>({}ITR)".format("P" if mr.from_pitr else ""))

            last_eid = mr.last_cached_prefix[0]
            last_group = mr.last_cached_prefix[1]
            last_prefix = "--" if (last_eid == None) else \
                 lisp.lisp_print_eid_tuple(last_eid, last_group)

            output += lispconfig.lisp_table_row(
                mr.print_eid_tuple(), "0x" + lisp.lisp_hex_string(mr.nonce),
                ut, itr, mr.retry_count, "yes" if mr.tried_root else "no",
                last_sent, last_prefix)

        #endfor
        output += lispconfig.lisp_table_footer()
    #endif

    hover = "{} entries in referral-cache".format( \
        lisp.lisp_referral_cache.cache_size())
    title = lisp.lisp_span("LISP-MR Referral-Cache:", hover)

    output += lispconfig.lisp_table_header(
        title, "EID-Prefix or (S,G)", "Uptime", "Expires<br>TTL",
        "Referral Type", "Map-Referral Source",
        "Referral Address<br>Node Status", "Priority<br>Weight",
        "Map-Requests Sent<br>No Responses")

    output = lisp.lisp_referral_cache.walk_cache(lisp_walk_referral_cache,
                                                 output)

    output += lispconfig.lisp_table_footer()
    return (output)
示例#7
0
def oOOOoo0O0oO(parameter):
    if 6 - 6: OOooOOo * o0oOOo0O0Ooo + iII111i
    if 44 - 44: Ii1I % OoO0O00 + OoooooooOO - O0 - Ii1I - II111iiii
    if 99 - 99: ooOoO0o.Ii1I + I1Ii111 + OoooooooOO % o0oOOo0O0Ooo
    if 51 - 51: iIii1I11I1II1
    if (parameter != ""):
        return (oOoooo0O0Oo(parameter))
        if 34 - 34: oO0o + I1IiiI - oO0o
        if 17 - 17: II111iiii % iII111i + I11i - iII111i / OOooOOo + ooOoO0o
        if 59 - 59: OOooOOo % OoOoOO00.Ii1I * I1ii11iIi11i % I11i
        if 59 - 59: oO0o - iII111i
        if 15 - 15: I1Ii111.i11iIiiIii.OoooooooOO / OoO0O00 % Ii1I
    OooooOOoo0 = "Enter EID for Referral-Cache lookup:"
    i1I1IiiIi1i = lisp.lisp_eid_help_hover('<input type="text" name="eid" />')
    if 29 - 29: I1IiiI % I1IiiI
    ooo0OOOoo = '''
        <form action="/lisp/show/referral/lookup" method="post">
        <i><font face="Courier New" size="3">
        {} {}
        <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" />
        </font></i></form>
    '''.format(lisp.lisp_print_sans(OooooOOoo0), i1I1IiiIi1i)
    if 94 - 94: iIii1I11I1II1 / Oo0Ooo % iII111i * iII111i * II111iiii
    if 29 - 29: OoO0O00 + OoOoOO00 / o0oOOo0O0Ooo / OOooOOo * iIii1I11I1II1
    if 62 - 62: OOooOOo / oO0o - OoO0O00.I11i
    if 11 - 11: I1ii11iIi11i.OoO0O00 * IiII * OoooooooOO + ooOoO0o
    IiII111i1i11 = len(lisp.lisp_ddt_map_requestQ)
    if (IiII111i1i11 != 0):
        i111iIi1i1II1 = "{} entries in map-request queue".format(IiII111i1i11)
        oooO = lisp.lisp_span("LISP-MR Map-Request Queue:", i111iIi1i1II1)
        if 26 - 26: Ii1I % I1ii11iIi11i
        ooo0OOOoo += lispconfig.lisp_table_header(
            oooO, "EID-Prefix or (S,G)", "Nonce", "Uptime",
            "Map-Request Source", "Retry Count", "Tried DDT-Root",
            "Last Request Sent To", "Last Map-Referral EID-Prefix")
        if 76 - 76: IiII * iII111i
        for ooooooo00o in lisp.lisp_ddt_map_requestQ:
            o0oooOO00 = lisp.lisp_ddt_map_requestQ[ooooooo00o]
            iiIiii1IIIII = lisp.lisp_print_elapsed(o0oooOO00.uptime)
            o00o = o0oooOO00.last_request_sent_to
            o00o = "--" if (o00o == None) else o00o.print_address_no_iid()
            if 45 - 45:
                I1ii11iIi11i.o0oOOo0O0Ooo.I1ii11iIi11i - I1IiiI.o0oOOo0O0Ooo
            iiI1IIIi = o0oooOO00.itr
            iiI1IIIi = "--" if (iiI1IIIi == None) else (
                iiI1IIIi.print_address_no_iid() +
                "<br>({}ITR)".format("P" if o0oooOO00.from_pitr else ""))
            if 47 - 47: Oo0Ooo % I11i % i11iIiiIii - O0 + ooOoO0o
            if 94 - 94: I1Ii111
            i11II1I11I1 = o0oooOO00.last_cached_prefix[0]
            OOoOO0ooo = o0oooOO00.last_cached_prefix[1]
            II1iIi11 = "--" if (i11II1I11I1
                                == None) else lisp.lisp_print_eid_tuple(
                                    i11II1I11I1, OOoOO0ooo)
            if 12 - 12: Ii1I + i11iIiiIii * iIii1I11I1II1 / I1ii11iIi11i.I11i
            if 5 - 5: i1IIi + IiII / o0oOOo0O0Ooo.iII111i / I11i
            ooo0OOOoo += lispconfig.lisp_table_row(
                o0oooOO00.print_eid_tuple(),
                "0x" + lisp.lisp_hex_string(o0oooOO00.nonce), iiIiii1IIIII,
                iiI1IIIi, o0oooOO00.retry_count,
                "yes" if o0oooOO00.tried_root else "no", o00o, II1iIi11)
            if 32 - 32: I1IiiI % iIii1I11I1II1 / i1IIi - I1IiiI
            if 7 - 7: I1Ii111 * OoO0O00 - ooOoO0o + OOooOOo * I1IiiI % OoO0O00
        ooo0OOOoo += lispconfig.lisp_table_footer()
        if 15 - 15: OoOoOO00 % I1IiiI * I11i
        if 81 - 81: ooOoO0o - iIii1I11I1II1 - i1IIi / I1Ii111 - O0 * I11i
    i111iIi1i1II1 = "{} entries in referral-cache".format(
        lisp.lisp_referral_cache.cache_size())
    if 20 - 20: oO0o % IiII
    oooO = lisp.lisp_span("LISP-MR Referral-Cache:", i111iIi1i1II1)
    if 19 - 19: I1ii11iIi11i % IiII + ooOoO0o / I1Ii111.ooOoO0o
    ooo0OOOoo += lispconfig.lisp_table_header(
        oooO, "EID-Prefix or (S,G)", "Uptime", "Expires<br>TTL",
        "Referral Type", "Map-Referral Source",
        "Referral Address<br>Node Status", "Priority<br>Weight",
        "Map-Requests Sent<br>No Responses")
    if 12 - 12: i1IIi + i1IIi - I1ii11iIi11i * Oo0Ooo % Oo0Ooo - II111iiii
    ooo0OOOoo = lisp.lisp_referral_cache.walk_cache(o00oO0oOo00, ooo0OOOoo)
    if 52 - 52: ooOoO0o.iII111i + I1Ii111
    ooo0OOOoo += lispconfig.lisp_table_footer()
    return (ooo0OOOoo)
    if 38 - 38: i1IIi - II111iiii.I1Ii111
    if 58 - 58: I1IiiI.iII111i + OoOoOO00
    if 66 - 66: iII111i / oO0o * OoooooooOO + OoooooooOO % I11i
    if 49 - 49: oO0o - i11iIiiIii.I1Ii111 * Ii1I % iII111i + i1IIi
    if 71 - 71: o0oOOo0O0Ooo
    if 38 - 38: oO0o % OoOoOO00 + I1ii11iIi11i.i11iIiiIii
    if 53 - 53: i11iIiiIii * iII111i