def lisp_ms_encryption_keys_command(kv_pair): for kw in kv_pair.keys(): value = kv_pair[kw] if (kw == "map-register-key"): lisp.lisp_ms_encryption_keys = lisp.lisp_parse_auth_key(value) #endif if (kw == "json-key"): lisp.lisp_ms_json_keys = lisp.lisp_parse_auth_key(value) #endif #endfor return
def lisp_site_command(kv_pairs): global lisp_sites_by_name global lisp_sites_by_name_sorted site = lisp.lisp_site() allowed_rloc_set = [] if (kv_pairs.has_key("address")): for addr in kv_pairs["address"]: rloc = lisp.lisp_rloc() allowed_rloc_set.append(rloc) #endfor #endif allowed_eid_set = [] if (kv_pairs.has_key("eid-prefix")): for eid in kv_pairs["eid-prefix"]: site_eid = lisp.lisp_site_eid(site) allowed_eid_set.append(site_eid) #endfor #endif for kw in kv_pairs.keys(): value = kv_pairs[kw] if (kw == "site-name"): site.site_name = value if (kw == "description"): site.description = value if (kw == "authentication-key"): site.auth_key = lisp.lisp_parse_auth_key(value) #endif if (kw == "shutdown"): site.shutdown = True if value == "yes" else False #endif if (kw == "instance-id"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] if (v == "*"): site_eid.eid.store_iid_range(0, 0) else: if (v == ""): v = "0" site_eid.eid.instance_id = int(v) site_eid.group.instance_id = int(v) #endif #endfor #endif if (kw == "eid-prefix"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] if (v != ""): site_eid.eid.store_prefix(v) #endfor #endif if (kw == "group-prefix"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] if (v != ""): site_eid.group.store_prefix(v) #endfor #endif if (kw == "accept-more-specifics"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] yes_or_no = True if (v == "yes") else False site_eid.accept_more_specifics = yes_or_no #endfor #endif if (kw == "force-proxy-reply"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] yes_or_no = True if (v == "yes") else False site_eid.force_proxy_reply = yes_or_no #endfor #endif if (kw == "force-ttl"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] if (v == ""): continue site_eid.force_ttl = None if int(v) == 0 else int(v) #endfor #endif if (kw == "echo-nonce-capable"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] yes_or_no = True if (v == "yes") else False site_eid.echo_nonce_capable = yes_or_no #endfor #endif if (kw == "force-nat-proxy-reply"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] yes_or_no = True if (v == "yes") else False site_eid.force_nat_proxy_reply = yes_or_no #endfor #endif if (kw == "pitr-proxy-reply-drop"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] yes_or_no = True if (v == "yes") else False site_eid.pitr_proxy_reply_drop = yes_or_no #endfor #endif if (kw == "proxy-reply-action"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] site_eid.proxy_reply_action = v #endfor #endif if (kw == "require-signature"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] yes_or_no = True if (v == "yes") else False site_eid.require_signature = yes_or_no #endfor #endif if (kw == "policy-name"): for i in range(len(allowed_eid_set)): site_eid = allowed_eid_set[i] v = value[i] site_eid.policy = v #endfor #endif if (kw == "address"): for i in range(len(allowed_rloc_set)): rloc = allowed_rloc_set[i] v = value[i] if (v != ""): rloc.rloc.store_address(v) #endfor #endif if (kw == "priority"): for i in range(len(allowed_rloc_set)): rloc = allowed_rloc_set[i] v = value[i] if (v == ""): v = "0" rloc.priority = int(v) #endfor #endif if (kw == "weight"): for i in range(len(allowed_rloc_set)): rloc = allowed_rloc_set[i] v = value[i] if (v == ""): v = "0" rloc.weight = int(v) #endfor #endif #endfor # # Do not modify existing entries. We can only support adding new sites. # if (lisp_sites_by_name.has_key(site.site_name)): return # # Store values in internal data structures. Inside of lisp_site() sort # EID-prefixes. # lisp_sites_by_name[site.site_name] = site lisp_sites_by_name_sorted = sorted(lisp_sites_by_name) for site_eid in allowed_eid_set: site_eid.add_cache() key = site_eid.build_sort_key() site.allowed_prefixes[key] = site_eid #endfor for rloc in allowed_rloc_set: key = rloc.rloc.print_address() site.allowed_rlocs[key] = rloc #endfor # # Sort the site.allowed_preifxes{} array. # site.allowed_prefixes_sorted = sorted(site.allowed_prefixes) return