diff options
author | Cheeze-It <16260577+Cheeze-It@users.noreply.github.com> | 2023-04-04 07:41:59 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-04 07:41:59 -0700 |
commit | 4d5bc82590533c2f1d65334636fd8427c2a1bf6b (patch) | |
tree | 1a5479aec55199ac195bd4c6761d7e693cdbfb8a /python/vyos/ipsec.py | |
parent | d6ef0c54ad8c8f9f2c5f1811781dba6111201fe4 (diff) | |
parent | 94b65bb3936b607a6bc85fe23176ff855c722519 (diff) | |
download | vyos-1x-4d5bc82590533c2f1d65334636fd8427c2a1bf6b.tar.gz vyos-1x-4d5bc82590533c2f1d65334636fd8427c2a1bf6b.zip |
Merge branch 'vyos:current' into current
Diffstat (limited to 'python/vyos/ipsec.py')
-rw-r--r-- | python/vyos/ipsec.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/python/vyos/ipsec.py b/python/vyos/ipsec.py index cb7c39ff6..bb5611025 100644 --- a/python/vyos/ipsec.py +++ b/python/vyos/ipsec.py @@ -139,3 +139,41 @@ def terminate_vici_by_name(ike_name: str, child_name: str) -> None: else: raise ViciCommandError( f'Failed to terminate SA for IKE {ike_name}') + + +def vici_initiate(ike_sa_name: str, child_sa_name: str, src_addr: str, + dst_addr: str) -> bool: + """Initiate IKE SA connection with specific peer + + Args: + ike_sa_name (str): an IKE SA connection name + child_sa_name (str): a child SA profile name + src_addr (str): source address + dst_addr (str): remote address + + Returns: + bool: a result of initiation command + """ + from vici import Session as vici_session + + try: + session = vici_session() + except Exception: + raise ViciInitiateError("IPsec not initialized") + + try: + session_generator = session.initiate({ + 'ike': ike_sa_name, + 'child': child_sa_name, + 'timeout': '-1', + 'my-host': src_addr, + 'other-host': dst_addr + }) + # a dummy `for` loop is required because of requirements + # from vici. Without a full iteration on the output, the + # command to vici may not be executed completely + for _ in session_generator: + pass + return True + except Exception: + raise ViciCommandError(f'Failed to initiate SA for IKE {ike_sa_name}')
\ No newline at end of file |