def process_acquire(self, xfrm_acquire, xfrm_tmpl):
small_tsi = TrafficSelector.from_network(ip_network(xfrm_acquire.sel.saddr.to_ipaddr()),
xfrm_acquire.sel.sport, xfrm_acquire.sel.proto)
small_tsr = TrafficSelector.from_network(ip_network(xfrm_acquire.sel.daddr.to_ipaddr()),
xfrm_acquire.sel.dport, xfrm_acquire.sel.proto)
acquire = Acquire(small_tsi, small_tsr, xfrm_acquire.policy.index)
request = None
if self.state == IkeSa.State.INITIAL:
request = self.generate_ike_sa_init_request(acquire)
elif self.state == IkeSa.State.ESTABLISHED:
request = self.generate_create_child_sa_request(acquire)
else:
logging.warning('Cannot process acquire while waiting for a response.')
# TODO: Use a request queue for simplicity and to avoid problems with
# state machine
if request:
request_data = request.to_bytes()
self.log_message(request, self.peer_addr, request_data, send=True)
return request_data
else:
return None
评论列表
文章目录