Esempio n. 1
0
def lisp_ms_show_ddt_entries():
    hover = "{} entries configured".format(lisp.lisp_ddt_cache.cache_size())
    title = lisp.lisp_span("LISP-MS Configured Map-Server Peers & " + \
        "Authoritative Prefixes:", hover)
    output = lispconfig.lisp_table_header(title, "EID-Prefix or (S,G)",
        "Peer Address", "Delegation Type", "Priority/Weight", 
        "Map-Referrals Sent")

    output = lisp.lisp_ddt_cache.walk_cache(lisp_ms_walk_ddt_cache, output)
    output += lispconfig.lisp_table_footer()
    return(output)
Esempio n. 2
0
def I111I1Iiii1i(parameter):
    if 56 - 56: I1ii11iIi11i % O0 - I1IiiI
    if 100 - 100: Ii1I - O0 % oO0o * OOooOOo + I1IiiI
    if 88 - 88: OoooooooOO - OoO0O00 * O0 * OoooooooOO.OoooooooOO
    if 33 - 33: I1Ii111 + iII111i * oO0o / iIii1I11I1II1 - I1IiiI
    if (parameter != ""):
        return (o000O0o(parameter))
        if 54 - 54: I1Ii111 / OOooOOo.oO0o % iII111i
        if 57 - 57: i11iIiiIii.I1ii11iIi11i - Ii1I - oO0o + OoOoOO00
        if 63 - 63: OoOoOO00 * iII111i
        if 69 - 69: O0.OoO0O00
        if 49 - 49: I1IiiI - I11i
    I111IIIiIii = "Enter EID for DDT-Cache lookup:"
    OoOOoOooooOOo = lisp.lisp_eid_help_hover(
        '<input type="text" name="eid" />')
    if 87 - 87: I1IiiI
    oOOo0 = '''
        <form action="/lisp/show/delegations/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(I111IIIiIii), OoOOoOooooOOo)
    if 58 - 58: OoOoOO00 % o0oOOo0O0Ooo
    if 50 - 50: I1Ii111.o0oOOo0O0Ooo
    if 97 - 97: O0 + OoOoOO00
    if 89 - 89: o0oOOo0O0Ooo + OoO0O00 * I11i * Ii1I
    iiIiI1i1 = "{} entries in delegation-cache".format(
        lisp.lisp_ddt_cache.cache_size())
    if 69 - 69: ooOoO0o
    I11iII = lisp.lisp_span("LISP-DDT Configured Delegations:", iiIiI1i1)
    if 5 - 5: I1IiiI
    oOOo0 += lispconfig.lisp_table_header(I11iII, "EID-Prefix or (S,G)",
                                          "Delegation Address",
                                          "Delegation Type", "Priority/Weight",
                                          "Map-Referrals Sent")
    if 48 - 48: o0oOOo0O0Ooo - oO0o / OoooooooOO
    oOOo0 = lisp.lisp_ddt_cache.walk_cache(i1Ii1Ii, oOOo0)
    oOOo0 += lispconfig.lisp_table_footer()
    return (oOOo0)
    if 100 - 100: I1IiiI / o0oOOo0O0Ooo % II111iiii % Oo0Ooo % OOooOOo
    if 98 - 98: I11i % i11iIiiIii % ooOoO0o + Ii1I
    if 78 - 78: I1ii11iIi11i % oO0o / iII111i - iIii1I11I1II1
    if 69 - 69: I1Ii111
    if 11 - 11: I1IiiI
    if 16 - 16: Ii1I + IiII * O0 % i1IIi.I1IiiI
    if 67 - 67: OoooooooOO / I1IiiI * Ii1I + I11i
    if 65 - 65: OoooooooOO - I1ii11iIi11i / ooOoO0o / II111iiii / i1IIi
Esempio n. 3
0
def IIIIii1I(parameter):
    if 39 - 39: II111iiii / ooOoO0o + I1Ii111 / OoOoOO00
    if 13 - 13: IiII + O0 + iII111i % I1IiiI / o0oOOo0O0Ooo.IiII
    if 86 - 86: oO0o * o0oOOo0O0Ooo % i1IIi.Ii1I.i11iIiiIii
    if 56 - 56: I1ii11iIi11i % O0 - I1IiiI
    if (parameter != ""):
        return (O0ooo0O0oo0(parameter))
        if 100 - 100: Ii1I - O0 % oO0o * OOooOOo + I1IiiI
        if 88 - 88: OoooooooOO - OoO0O00 * O0 * OoooooooOO.OoooooooOO
        if 33 - 33: I1Ii111 + iII111i * oO0o / iIii1I11I1II1 - I1IiiI
        if 54 - 54: I1Ii111 / OOooOOo.oO0o % iII111i
        if 57 - 57: i11iIiiIii.I1ii11iIi11i - Ii1I - oO0o + OoOoOO00
    O0oOoOOOoOO = "Enter EID for DDT-Cache lookup:"
    oO00oooOOoOo0 = lisp.lisp_eid_help_hover(
        '<input type="text" name="eid" />')
    if 74 - 74:
        iIii1I11I1II1 * I1ii11iIi11i + OoOoOO00 / i1IIi / II111iiii.Oo0Ooo
    oooooOoo0ooo = '''
        <form action="/lisp/show/delegations/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(O0oOoOOOoOO), oO00oooOOoOo0)
    if 62 - 62: OoooooooOO * I1IiiI
    if 58 - 58: OoOoOO00 % o0oOOo0O0Ooo
    if 50 - 50: I1Ii111.o0oOOo0O0Ooo
    if 97 - 97: O0 + OoOoOO00
    OO0O000 = "{} entries in delegation-cache".format(
        lisp.lisp_ddt_cache.cache_size())
    if 37 - 37: OoooooooOO - O0 - o0oOOo0O0Ooo
    o0o0O0O00oOOo = lisp.lisp_span("LISP-DDT Configured Delegations:", OO0O000)
    if 14 - 14: OoOoOO00 + oO0o
    oooooOoo0ooo += lispconfig.lisp_table_header(
        o0o0O0O00oOOo, "EID-Prefix or (S,G)", "Delegation Address",
        "Delegation Type", "Priority/Weight", "Map-Referrals Sent")
    if 52 - 52: OoooooooOO - ooOoO0o
    oooooOoo0ooo = lisp.lisp_ddt_cache.walk_cache(oooO0, oooooOoo0ooo)
    oooooOoo0ooo += lispconfig.lisp_table_footer()
    return (oooooOoo0ooo)
    if 74 - 74: iII111i + o0oOOo0O0Ooo
    if 71 - 71: Oo0Ooo % OOooOOo
    if 98 - 98: I11i % i11iIiiIii % ooOoO0o + Ii1I
    if 78 - 78: I1ii11iIi11i % oO0o / iII111i - iIii1I11I1II1
    if 69 - 69: I1Ii111
    if 11 - 11: I1IiiI
    if 16 - 16: Ii1I + IiII * O0 % i1IIi.I1IiiI
    if 67 - 67: OoooooooOO / I1IiiI * Ii1I + I11i
Esempio n. 4
0
def lisp_ddt_show_delegations_command(parameter):

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

    #
    # Top part of display has the form for doing a specific lookup.
    #
    banner = "Enter EID for DDT-Cache lookup:"
    input_rectangle = \
        lisp.lisp_eid_help_hover('<input type="text" name="eid" />')
    output = '''
        <form action="/lisp/show/delegations/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)

    #
    # Show delegation cache.
    #
    hover = "{} entries in delegation-cache".format( \
        lisp.lisp_ddt_cache.cache_size())
    title = lisp.lisp_span("LISP-DDT Configured Delegations:", hover)

    output += lispconfig.lisp_table_header(title, "EID-Prefix or (S,G)",
                                           "Delegation Address",
                                           "Delegation Type",
                                           "Priority/Weight",
                                           "Map-Referrals Sent")

    output = lisp.lisp_ddt_cache.walk_cache(lisp_ddt_walk_ddt_cache, output)
    output += lispconfig.lisp_table_footer()
    return (output)
Esempio n. 5
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)
Esempio n. 6
0
def lisp_display_site_eid_entry(site_eid, site, first, output):

    eid_str = site_eid.print_eid_tuple()
    eid_str = eid_str.replace("no-address/0", "")

    #
    # Create URL format for all of (*,G), (S,G), and an EID-prefix.
    #
    eid = site_eid.eid
    group = site_eid.group
    if (eid.is_null() and group.is_null() == False):
        url = "{}-*-{}".format(group.instance_id, group.print_prefix_url())
        eid_str = "<a href='/lisp/show/site/{}'>{}</a>".format(url, eid_str)
    #endif
    if (eid.is_null() == False and group.is_null()):
        url = "{}".format(eid.print_prefix_url())

        #
        # Distinguished-Name EIDs have "'"s in them.
        #
        if (url.find("'") != -1):
            url = url.replace("'", "name-", 1)
            url = url.replace("'", "")
        else:

            #
            # E.164 EIDs have "+"s in them.
            #
            url = url.replace("+", "plus-")
        #endif
        eid_str = "<a href='/lisp/show/site/{}'>{}</a>".format(url, eid_str)
    #endif
    if (eid.is_null() == False and group.is_null() == False):
        url = "{}-{}".format(eid.print_prefix_url(), group.print_prefix_url())
        eid_str = "<a href='/lisp/show/site/{}'>{}</a>".format(url, eid_str)
    #endif

    site_name = site.site_name if first else ""
    flags = "--"
    if (site_eid.registered): flags = site_eid.print_flags(True)
    registerer = "--"
    if (site_eid.last_registerer.afi != lisp.LISP_AFI_NONE):
        registerer = site_eid.last_registerer.print_address()
    #endif
    registered = lisp.green("yes", True) if site_eid.registered else \
        lisp.red("no", True)
    if (site.shutdown): registered = lisp.red("admin-shutdown", True)

    if (site_eid.dynamic):
        registered += " (dynamic)"
    elif (site_eid.accept_more_specifics):
        registered = "(ams)"
    #endif

    lts = lisp.lisp_print_elapsed(site_eid.last_registered)
    if (time.time() - site_eid.last_registered >= (site_eid.register_ttl / 2)
            and lts != "never"):
        lts = lisp.red(lts, True)
    #endif
    fts = lisp.lisp_print_elapsed(site_eid.first_registered)

    if (site_eid.accept_more_specifics):
        num = len(site_eid.more_specific_registrations)
        hover = "{} EID-prefixes registered".format(num)
        eid_str = lisp.lisp_span(eid_str, hover)
    #endif

    output += lispconfig.lisp_table_row(site_name, eid_str, registered,
                                        registerer, lts, fts, flags)
    return (output)
Esempio n. 7
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
Esempio n. 8
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)
Esempio n. 9
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