pluto实现分析(2)——代码函数调用关系

2023-11-10

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,
严禁用于任何商业用途。
msn:  yfydz_no1@hotmail.com
来源: http://yfydz.cublog.cn
 

4. 代码函数调用关系表


main
  -> getopt_long
  -> init_ctl_socket
  -> init_info_socket
  -> init_constants
  -> pluto_init_log
  -> init_pluto_vendorid
  -> init_nat_traversal
  -> init_virtual_ip
  -> init_rnd_pool
  -> init_secret
  -> init_states
  -> init_connections
    -> event_schedule
  -> init_crypto
    -> mpz_init_set_str
    -> ike_alg_twofish_init
    -> ike_alg_serpent_init
    -> ike_alg_aes_init
    -> ike_alg_add
    -> ike_alg_blowfish_init
  -> init_crypto_helpers
    -> pluto_init_log
    -> init_rnd_pool
    -> free_preshared_secrets
    -> pluto_crypto_helper
    -> pluto_init_log
  -> init_demux 
  -> init_kernel
    -> init_pfkey
    -> kernel_ops == &linux_kernel_ops, &klips_kernel_ops, &noklips_kernel_ops
    -> kernel_ops->init
      -> klips_kernel_ops: NULL
      -> noklips_kernel_ops: init_noklips
      -> linux_kernel_ops: init_netlink
        -> socket, fcntl, bind
    -> kernel_ops->pfkey_register
      -> klips_kernel_ops:  klips_pfkey_register
        -> pfkey_register_proto
          -> pfkey_msg_start
          -> finish_pfkey_msg
          -> kernel_ops->pfkey_register_response
      -> noklips_kernel_ops: noklips_register
      -> linux_kernel_ops: linux_pfkey_register
        -> pfkey_register_proto
        -> pfkey_close
    -> event_schedule (timer.c)
      -> alloc_thing(struct event)
  -> init_adns
    -> readlink("/proc/self/exe")
    -> fork
  -> init_id
    -> set_myid
      -> atoid
      -> free_id_content
      -> unshare_id_content
      -> calc_myid_str
    -> set_myFQDN
      -> gethostname
      -> free_id_content
      -> clonetochunk
      -> calc_myid_str
  -> init_fetch
    -> curl_global_init
    -> pthread_create
      -> fetch_thread
        -> pthread_cond_signal
  -> load_authcerts
  -> load_crls
  -> load_acerts
  -> daily_log_event
  -> call_server (server.c)
    -> SIGHUP: huphandler
    -> SIGTERM: termhandler
    -> SIGCHILD: childhandler
    -> next_event
    -> reapchildren
      -> adns_reapchild
        -> free_any
        -> release_all_continuations
      -> pluto_crypt_handle_dead_child
    -> kernel_ops->process_queue
      -> klips_kernel_ops: pfkey_dequeue
        -> pfkey_input_ready
        -> record_and_initiate_opportunistic
      -> noklips_kernel_ops: noklips_dequeue
      -> linux_kernel_ops: NULL
    -> pluto_crypto_helper_sockets
    -> select
    -> handle_timer_event (timer.c)
      -> set_cur_state
      -> init_secret
      -> scan_proc_shunts
      -> connection_check_phase2
      -> daily_log_event
      -> send_packet (demux.c)
        -> setportof
        -> check_msg_errqueue
        -> sendto
      -> event_schedule
      -> release_pending_whacks
      -> ipsecdoi_replace
        -> aggr_outI1
        -> main_outI1
        -> ipsecdoi_initiate
      -> delete_state
      -> delete_dpd_event
        -> _delete_dpd_event
      -> release_md
      -> dpd_event (dpd.c)
        -> p1_dpd_outI1
          -> dpd_outI
            -> event_schedule
            -> was_eroute_idle
            -> dpd_sched_timeout
              -> delete_dpd_event
              -> event_schedule
            -> send_isakmp_notification
        -> p2_dpd_outI1
          -> find_phase1_state
          -> dpd_outI
      -> dpd_timeout (dpd.c)
        -> set_cur_connection
        -> delete_states_by_connection
        -> unroute_connection
        -> initiate_connection
        -> reset_cur_connection
      -> nat_traversal_ka_event
        -> for_each_state
          -> nat_traversal_ka_event_state
            -> state_with_serialno
            -> nat_traversal_send_ka
              -> setchunk
              -> send_packet
        -> nat_traversal_new_ka_event
          -> event_schedule
      -> pfree
      -> reset_cur_state
    -> send_unsent_ADNS_queries
    -> handle_adns_answer
    -> kernel_ops->process_msg
      -> klips_kernel_ops: pfkey_event (kernel_pfkey.c)
        -> pfkey_get
          -> pfkey_input_ready
        -> pfkey_async
          -> pfkey_msg_parse
          -> kernel_ops->pfkey_register_response
            -> klips_kernel_ops:  klips_pfkey_register_response
              -> kernel_alg_register_pfkey
            -> noklips_kernel_ops
            -> linux_kernel_ops: linux_pfkey_register_response
              -> kernel_alg_register_pfkey
          -> process_pfkey_acquire
            -> record_and_initiate_opportunistic (kernel.c)
              -> alloc_thing(struct bare_shunt
              -> initiate_opportunistic (connections.c)
                -> initiate_opportunistic_body
                  -> find_connection_for_clients
                  -> assign_hold
                  -> ipsecdoi_initiate
                  -> check_txt_recs
                  -> get_RSA_private_key
                  -> same_RSA_public_key
                  -> build_outgoing_opportunistic_connection
                    -> find_host_pair_connections
                    -> oppo_instantiate
                      -> instantiate
                        -> clone_thing
                        -> unshare_connection_strings
                        -> unshare_ietfAttrList
                        -> alg_info_addref
                        -> default_end
                        -> connect_to_host_pair
                          -> find_host_pair
                      -> routed
                      -> format_connection
                        -> format_end
                          -> is_virtual_end
                          -> networkof
                          -> maskof
                  -> replace_bare_shunt
                    -> bare_shunt_ptr
                    -> raw_eroute
                    -> alloc_thing(struct bare_shunt
                  -> shunt_policy_spi
                    -> null
                  -> alloc_thing(struct find_oppo_continuation
                  -> start_adns_query
                  -> cannot_oppo
                  -> close_any
          -> process_pfkey_nat_t_new_mapping
            -> initaddr
            -> for_each_state
              -> nat_t_new_klips_mapp
                -> nat_traversal_new_mapping
                  -> addrtot
                  -> sameaddr
                  -> for_each_state
                    -> nat_traversal_find_new_mapp_state
                      -> IS_IPSEC_SA_ESTABLISHED
                      -> update_ipsec_sa
                        -> IS_IPSEC_SA_ESTABLISHED
                        -> IS_ONLY_INBOUND_IPSEC_SA_ESTABLISHED
                        -> update_nat_t_ipsec_esp_sa
                          -> set_text_said
                          -> kernel_ops->add_sa 
                            -> klips_kernel_ops: pfkey_add_sa (kernel_pfkey.c)
                              -> pfkey_msg_start
                              -> pfkey_build
                                -> pfkey_extensions_free
                              -> pfkey_sa_build
                              -> pfkeyext_address
                              -> pfkey_key_build
                              -> pfkey_x_nat_t_type_build
                              -> pfkey_x_nat_t_port_build
                              -> finish_pfkey_msg
                            -> noklips_kernel_ops: noklips_event
                            -> linux_kernel_ops: netlink_add_sa (kernel_nerlink.c)
                              -> sparse_name
                              -> send_netlink_msg
                              -> 
      -> noklips_kernel_ops: noklips_event
      -> linux_kernel_ops: netlink_process_msg
        -> netlink_get
          -> netlink_acquire
            -> xfrm_to_ip_address
            -> addrtosubnet
            -> has_bare_hold
            -> record_and_initiate_opportunistic
          -> netlink_policy_expire
            -> send_netlink_msg
            -> netlink_shunt_expire
    -> comm_handle(interfaces) (demux.c)
      -> check_msg_errqueue
      -> alloc_md (msg_digest)
      -> process_packet (demux.c)
        -> SEND_NOTIFICATION
          -> send_notification (ipsec_doi.c)
            -> delete_state
            -> init_pbs
            -> out_struct
            -> out_generic
            -> out_zero
            -> close_output_pbs
            -> out_raw
            -> hmac_init_chunk
            -> hmac_update
            -> hmac_final
            -> init_phase2_iv
            -> encrypt_message
            -> setchunk
            -> send_packet
          -> send_notification_from_state
            -> find_phase1_state
            -> send_notification
          -> send_notification_from_md
            -> send_notification
          do state change
        -> find_state
          -> state_hash
          -> sameaddr, memcmp
        -> find_info_state
          -> state_hash
          -> sameaddr, memcmp
        -> reserve_msgid
        -> init_phase2_iv
        -> receive_ike_echo_request (ikeping.c)
          -> addrtot
        -> receive_ike_echo_reply
          -> addrtot
        -> xauth_calcbaseauth
        -> send_packet
        -> clonetochunk
        -> init_new_iv
        -> crypto_cbc_encrypt
        -> accept_delete
          -> same_peer_ids
          -> nat_traversal_change_port_lookup
          -> delete_state
          -> find_phase2_state_to_delete
          -> delete_event
          -> event_schedule
        -> handle_vendorid
        -> echo_hdr
        -> smc->processor (demux.c)
          -> main_inI1_outR1 (ipsec_doi.c)
            -> pbs_left
            -> find_host_connection
            -> rw_instantiate (connections.c)
              -> instantiate
                -> unshare_connection_strings
                -> unshare_ietfAttrList
                -> alg_info_addref
                -> default_end
                -> connect_to_host_pair
              -> subnetishost
              -> addrinsubnet
              -> aftoinfo
            -> new_state
              -> clone_thing(blank_state,
            -> get_cookie
            -> insert_state
              -> event_schedule
            -> copy_quirks
            -> out_struct
            -> out_generic_raw
            -> out_vendorid
            -> nat_traversal_vid_to_method
          -> main_inR1_outI2
            -> parse_isakmp_sa_body
            -> nat_traversal_vid_to_method
            -> alloc_thing(struct ke_continuation
            -> build_ke (crypt_ke.c)
              -> alloc_thing(struct pluto_crypto_req
              -> send_crypto_helper_request (pluto_crypt.c)
                -> reset_cur_state
                -> pluto_do_crypto_op
                -> (*cn->pcrc_func)
                -> pfree
                -> cleanup_crypto_helper
                -> init_crypto_helper
              -> delete_event
              -> event_schedule
              -> pcrc_func: main_inR1_outI2_continue
                -> set_cur_state
                -> main_inR1_outI2_tail
                -> complete_state_transition
                -> release_md
                -> reset_cur_state
            -> main_inR1_outI2_tail
              -> init_pbs
              -> echo_hdr
              -> ship_KE
                -> freeanychunk
                -> clonetochunk
                -> n_to_mpz
                -> out_generic_chunk
              -> ship_nonce
                -> freeanychunk
                -> clonetochunk
                -> out_generic_chunk
              -> out_generic
              -> out_zero
              -> close_output_pbs
              -> nat_traversal_add_natd
                -> out_modify_previous_np
                -> _natd_hash
                -> out_generic_raw
              -> close_message
              -> unhash_state
              -> insert_state
          -> main_inI2_outR2
            -> accept_KE
              -> clonereplacechunk
            -> accept_nonce
              -> clonereplacechunk
            -> decode_cr
              -> clonetochunk
              -> dntoa_or_null
            -> nat_traversal_natd_lookup
              -> _natd_hash
            -> nat_traversal_show_result
              -> null
            -> nat_traversal_new_ka_event
              -> event_schedule
            -> alloc_thing(struct ke_continuation
            -> build_ke
              -> pcrc_func: main_inI2_outR2_continue
                -> set_cur_state
                -> main_inI2_outR2_tail
                -> complete_state_transition
                -> release_md
                -> reset_cur_state
            -> main_inI2_outR2_tail
              -> has_preloaded_public_key
              -> ship_KE
              -> ship_nonce
              -> out_generic
              -> out_zero
              -> close_output_pbs
              -> build_and_ship_CR
              -> collect_rw_ca_candidates
              -> free_generalNames
              -> nat_traversal_add_natd
              -> close_message
              -> alloc_thing(struct dh_continuation
              -> perform_dh_secretiv
                 -> main_inI2_outR2_calcdone
                   -> process_packet
                   -> release_md
              -> update_iv
              -> pfree
          -> unexpected
          -> main_inR2_outI3
            -> accept_KE
            -> accept_nonce
            -> decode_cr
            -> doi_log_cert_thinking
            -> free_generalNames
            -> perform_dh_secretiv
            -> nat_traversal_natd_lookup
            -> nat_traversal_show_result
            -> nat_traversal_new_ka_event
            -> build_id_payload
            -> out_struct
            -> close_output_pbs
            -> out_chunk
            -> build_and_ship_CR
            -> main_mode_hash
              -> hmac_init_chunk
              -> main_mode_hash_body
                ->  hash_update_chunk
                ->  hash_update
              -> hmac_final
            -> out_generic_raw
            -> RSA_sign_hash
            -> encrypt_message
              -> pad_up
              -> out_zero 
              -> crypto_cbc_encrypt 
              -> update_iv 
              -> close_message 
          -> main_inI3_outR3
            -> main_inI3_outR3_tail
              -> main_id_and_auth
                -> main_inI3_outR3_continue
                  -> key_continue
                    -> delete_event
                    -> report_key_dns_failure
                    -> tail: main_inI3_outR3_tail
                    -> complete_state_transition
                    -> release_md
              -> doi_log_cert_thinking
              -> echo_hdr
              -> build_id_payload
              -> out_struct
              -> out_chunk
              -> close_output_pbs
              -> out_generic_raw
              -> encrypt_message
              -> ISAKMP_SA_established (connections.c)
                -> same_id
                -> sameaddr
                -> release_connection
          -> main_inR3
            -> main_inR3_tail
              -> main_id_and_auth
                -> main_inR3_continue
                  -> key_continue
                    -> tail: main_inR3_tail
            -> ISAKMP_SA_established
            -> set_ph1_iv
            -> update_iv
          -> aggr_inI1_outR1_psk (ikev1_aggr.c)
            -> aggr_inI1_outR1_common
              -> find_host_connection
              -> rw_instantiate
              -> new_state
              -> decode_peer_id
                -> setchunk
                -> decode_cert
                  -> parse_x509cert
                  -> verify_x509cert
                  -> add_x509_public_key
                  -> free_generalNames
                  -> parse_pkcs7_cert
                  -> store_x509certs
                -> same_id
                -> decode_cr
                -> refine_host_connection
                -> free_generalNames
                -> rw_instantiate
                -> connection_discard
                -> free_id_content
                -> unshare_id_content
              -> idtoa
              -> get_cookie
              -> insert_state
              -> nat_traversal_vid_to_method
              -> clonereplacechunk
              -> parse_isakmp_sa_body
              -> accept_KE
              -> accept_nonce
              -> alloc_thing(struct ke_continuation
              -> build_ke
                -> pcrc_func: aggr_inI1_outR1_continue
                  -> set_cur_state
                  -> aggr_inI1_outR1_tail
                  -> complete_state_transition
                  -> release_md
                  -> reset_cur_state
              -> aggr_inI1_outR1_tail
                -> init_pbs
                -> out_struct
                -> parse_isakmp_sa_body
                -> ship_KE
                -> ship_nonce
                -> build_id_payload
                -> out_chunk
                -> close_output_pbs
                -> perform_dh_secretiv
                -> update_iv
                -> main_mode_hash
                -> out_generic_raw
                -> RSA_sign_hash
                -> out_vendorid
                -> nat_traversal_add_natd
                -> close_message
          -> aggr_inI1_outR1_rsasig
            -> aggr_inI1_outR1_common
          -> aggr_inR1_outI2
            -> decode_peer_id
            -> idtoa
            -> parse_isakmp_sa_body
            -> copy_quirks
            -> nat_traversal_vid_to_method
            -> accept_KE
            -> accept_nonce
            -> unhash_state
            -> insert_state
            -> nat_traversal_natd_lookup
            -> nat_traversal_show_result
            -> nat_traversal_new_ka_event
            -> perform_dh_secretiv
            -> aggr_inR1_outI2_tail
              -> aggr_id_and_auth
                -> aggr_inR1_outI2_continue
                  -> key_continue
                    -> tail: aggr_inR1_outI2_tail
              -> out_struct
              -> nat_traversal_add_natd
              -> build_id_payload
              -> init_pbs
              -> out_chunk
              -> main_mode_hash
              -> out_generic_raw
              -> RSA_sign_hash
              -> encrypt_message
          -> aggr_inI2
            -> aggr_inI2_tail
              -> nat_traversal_natd_lookup
              -> nat_traversal_show_result
              -> nat_traversal_new_ka_event
              -> build_id_payload
              -> init_pbs
              -> out_struct
              -> out_chunk
              -> close_output_pbs
              -> in_struct
              -> aggr_id_and_auth
                -> aggr_inI2_continue
                  -> key_continue
                    -> tail: aggr_inI2_tail
              -> update_iv
          -> quick_inI1_outR1 (ikev1_quick.c)
            -> quick_mode_hash12
            -> decode_net_id
            -> save_new_iv
            -> quick_inI1_outR1_authtail
              -> find_client_connection
              -> format_end
              -> quick_inI1_outR1_process_answer
                -> get_RSA_private_key
                -> same_RSA_public_key
                -> report_verify_failure
              -> quick_inI1_outR1_start_query
                -> alloc_thing(struct verify_oppo_continuation
                -> resolve_myid
                -> iptoid
                -> start_adns_query
                  -> quick_inI1_outR1_continue
                    -> report_verify_failure
                    -> quick_inI1_outR1_authtail
                    -> complete_state_transition
                    -> release_md
                -> report_verify_failure
              -> oppo_instantiate
              -> rw_instantiate
              -> is_virtual_connection
              -> duplicate_state
              -> connection_discard
              -> insert_state
              -> nat_traversal_natoa_lookup
              -> parse_ipsec_sa_body
              -> accept_nonce
              -> accept_PFS_KE
              -> alloc_thing(struct qke_continuation
              -> build_ke
                -> pcrc_func: quick_inI1_outR1_cryptocontinue
                  -> set_cur_state
                  -> quick_inI1_outR1_cryptotail
                    -> out_struct
                    -> parse_ipsec_sa_body
                    -> ship_nonce
                    -> ship_KE
                    -> perform_dh_secret
                    -> out_raw
                    -> quick_mode_hash12
                    -> compute_keymats
                    -> install_inbound_ipsec_sa
                    -> encrypt_message
                    -> delete_ipsec_sa
                      -> do_command (kernel.c)
                        -> kernel_ops->docommand
                          -> klips_kernel_ops: do_command_linux (sysdep_linux.c)
                          -> linux_kernel_ops: do_command_linux 
                            -> subnetisaddr
                            -> DEFAULT_UPDOWN : sr->this.updown
                            -> popen
                      -> unroute_connection
                      -> teardown_half_ipsec_sa (kernel.c)
                        -> raw_eroute
                        -> del_spi
                          -> set_text_said 
                          -> kernel_ops->del_sa
                            -> klips_kernel_ops: pfkey_del_sa (kernel_pfkey.c)
                              -> pfkey_msg_start
                              -> pfkey_sa_build
                              -> pfkeyext_address
                              -> finish_pfkey_msg
                            -> noklips_kernel_ops: noklips_del_sa 
                              -> 
                            -> linux_kernel_ops: netlink_del_sa (kernel_netlink.c)
                              -> ip2xfrm
                              -> send_netlink_msg
                  -> complete_state_transition
                  -> release_md
                  -> reset_cur_state
              -> build_nonce
                -> quick_inI1_outR1_cryptocontinue
          -> quick_inR1_outI2
            -> quick_mode_hash12
            -> parse_ipsec_sa_body
            -> accept_nonce
            -> accept_PFS_KE
            -> perform_dh_secret
            -> check_net_id
            -> nat_traversal_natoa_lookup
            -> quick_mode_hash3
            -> compute_keymats
            -> install_ipsec_sa (kernel.c)
              -> could_route
              -> setup_half_ipsec_sa
                -> set_text_said
                -> kernel_alg_esp_info
                -> kernel_ops->add_sa
                -> raw_eroute
                  -> set_text_said
                  -> kernel_ops->raw_eroute
                    -> klips_kernel_ops: pfkey_raw_eroute (kernel_pfkey.c)
                      -> pfkey_msg_start
                      -> pfkey_sa_build
                      -> pfkeyext_address
                      -> pfkeyext_protocol
                      -> finish_pfkey_msg
                    -> noklips_kernel_ops: noklips_raw_eroute (kernel_noklips.c)
                    -> linux_kernel_ops: netlink_raw_eroute (kernel_netlink.c)
                      -> netlink_policy
                        -> send_netlink_msg
                          -> write, recvfrom
                -> kernel_ops->grp_sa
                  -> klips_kernel_ops: pfkey_grp_sa (kernel_pfkey.c)
                    -> pfkey_msg_start
                    -> pfkey_sa_build
                    -> pfkey_x_satype_build
                    -> pfkeyext_address
                    -> finish_pfkey_msg
                  -> noklips_kernel_ops: noklips_grp_sa 
                  -> linux_kernel_ops: NULL
              -> route_and_eroute (kernel.c)
                -> route_owner
                -> bare_shunt_ptr
                -> shunt_eroute
                  -> shunt_policy_spi
                  -> eclipsed
                  -> raw_eroute
                  -> eroute_connection
                    -> aftoinfo
                    -> raw_eroute
                -> sag_eroute
                -> do_command
                -> routed
                -> routes_agree
                -> free_bare_shunt
                -> raw_eroute
                -> state_with_serialno
              -> delete_ipsec_sa
            -> encrypt_message
            -> delete_ipsec_sa
            -> dpd_init (dpd.c)
              -> find_state
              -> delete_dpd_event
              -> event_schedule
              -> delete_dpd_event
          -> quick_inI2
            -> quick_mode_hash3
            -> install_ipsec_sa
            -> update_iv
            -> dpd_init
            -> delete_ipsec_sa
          -> informational
            -> dpd_inI_outR
              -> send_isakmp_notification
              -> delete_dpd_event
            -> dpd_inR
              -> delete_dpd_event
            -> delete_state
          -> xauth_inR0 (xauth.c)
            -> xauth_mode_cfg_hash
              -> hmac_init_chunk
              -> hmac_update
              -> hmac_final
            -> in_struct
            -> clonetochunk
            -> xauth_send_status
              -> generate_msgid
              -> out_struct
              -> out_raw
              -> close_output_pbs
              -> close_message
              -> xauth_mode_cfg_hash
              -> init_phase2_iv
              -> encrypt_message
              -> freeanychunk
              -> clonetochunk
              -> delete_event
              -> event_schedule
              -> send_packet
            -> xauth_launch_authent
              -> alloc_thing(struct thread_arg
              -> do_authentication
                -> do_pam_authentication
                -> do_md5_authentication
                  -> verify_path_space
                  -> fopen, crypt
          -> xauth_inR1
          -> modecfg_inR0
            -> xauth_mode_cfg_hash
            -> pbs_left
            -> in_struct
            -> modecfg_resp
              -> out_generic
              -> out_zero
              -> close_output_pbs
              -> get_internal_addresses
              -> out_raw
              -> close_output_pbs
              -> close_message
              -> xauth_mode_cfg_hash
              -> encrypt_message
          -> modecfg_inR1
            -> xauth_mode_cfg_hash
            -> pbs_left
            -> in_struct
          -> xauth_inI0
            -> modecfg_inI2
              -> xauth_mode_cfg_hash
              -> pbs_left
              -> in_struct
              -> modecfg_resp
            -> xauth_mode_cfg_hash
            -> in_struct
            -> xauth_client_ackstatus
              -> out_generic
              -> out_zero
              -> close_output_pbs
              -> out_struct
              -> close_message
              -> xauth_mode_cfg_hash
              -> encrypt_message
            -> xauth_client_resp
              -> out_generic
              -> out_zero
              -> close_output_pbs
              -> out_struct
              -> whack_prompt_for
              -> out_raw
              -> xauth_mode_cfg_hash
              -> close_message
              -> encrypt_message
          -> xauth_inI1
            -> modecfg_inI2
            -> xauth_mode_cfg_hash
            -> in_struct
            -> xauth_inI0
            -> xauth_client_ackstatus
        -> complete_state_transition
          -> update_retransmit_history
          -> delete_event
          -> freeanychunk
          -> close_output_pbs
          -> clonetochunk
          -> nat_traversal_change_port_lookup
            -> nat_traversal_new_mapping
              -> for_each_state
                -> nat_traversal_find_new_mapp_state
                  -> update_ipsec_sa
            -> update_pending
          -> send_packet
          -> event_schedule
          -> dpd_init 
          -> xauth_send_request  
            -> init_pbs
            -> out_struct
            -> close_message
            -> xauth_mode_cfg_hash
            -> close_message
            -> close_output_pbs
            -> init_phase2_iv
            -> encrypt_message
            -> clonetochunk
            -> send_packet
            -> delete_event
            -> event_schedule
          -> modecfg_send_request  
          -> modecfg_start_set 
          -> quick_outI1  
          -> unpend  
          -> release_whack  
          -> update_retransmit_history  
          -> delete_event  
          -> release_pending_whacks  
          -> delete_state  
            -> set_cur_state
            -> delete_dpd_event
            -> send_state
            -> delete_event
            -> flush_pending_by_state
            -> delete_cryptographic_continuation
            -> unhash_state
            -> delete_ipsec_sa
            -> connection_discard
            -> unreference_key
            -> mpz_clear
            -> pfreeany
      -> release_md
      -> reset_cur_connection
    -> whack_handle (rcv_whack.c)
      -> accept, read
      -> show_status
      -> unpack_whack_msg
      -> con_by_name
      -> set_myid
      -> delete_connections_by_name
      -> state_with_serialno
      -> delete_state
      -> add_connection
      -> set_myFQDN
      -> find_ifaces
      -> load_preshared_secrets
      -> load_groups
      -> list_public_keys
      -> load_authcerts
      -> load_acerts
      -> load_crls
      -> free_ocsp_fetch
      -> free_ocsp_cache
      -> list_certs
      -> list_authcerts
      -> list_acerts
      -> list_groups
      -> list_crls
      -> list_crl_fetch_requests
      -> list_ocsp_cache
      -> list_ocsp_fetch_requests
      -> scx_list (smart_card)
      -> timer_list
      -> key_add_request
      -> set_cur_connection
      -> route_group
      -> reset_cur_connection
      -> unroute_group
      -> initiate_connection (connections.c)
        -> con_by_name
        -> set_cur_connection
        -> oriented
        -> kernel_alg_makedb
        -> scx_get_pin
        -> ipsecdoi_initiate (ipsec_doi.c)
          -> find_phase1_state
          -> aggr_outI1 (ikev1_aggr.c)
            -> new_state
            -> set_state_ike_endpoints
            -> get_cookie
            -> insert_state
            -> init_am_st_oakley
            -> add_pending
            -> build_ke
              -> pcrc_func: aggr_outI1_continue
                -> set_cur_state
                -> aggr_outI1_tail
                -> complete_state_transition
                -> release_md
                -> reset_globals
            -> aggr_outI1_tail
              -> init_pbs
              -> out_struct
              -> out_sa
              -> clonetochunk
              -> ship_KE
              -> ship_nonce
              -> build_id_payload
              -> out_generic_raw
              -> nat_traversal_add_vid
              -> out_vendorid
              -> close_message
              -> close_output_pbs
              -> send_packet
              -> delete_event
              -> event_schedule
            -> reset_globals
          -> main_outI1
            -> new_state
            -> set_state_ike_endpoints
            -> set_cur_state
            -> get_cookie
            -> insert_state
            -> add_pending
            -> init_pbs
            -> out_struct
            -> POLICY_ISAKMP
            -> out_sa (spdb_struct.c)
              -> oakley_alg_makedb
              -> kernel_alg_makedb
              -> out_struct
              -> out_raw
              -> get_ipsec_spi (kernel.c)
                -> set_text_said
                -> kernel_ops->get_spi
                  -> klips_kernel_ops: NULL
                  -> noklips_kernel_ops: NULL
                  -> linux_kernel_ops: netlink_get_spi
                    -> ip2xfrm
                    -> send_netlink_msg
                -> get_rnd_bytes
              -> out_attr
              -> close_output_pbs
              -> free_sa
            -> clonetochunk
            -> out_generic_raw
            -> out_modify_previous_np
            -> nat_traversal_add_vid
            -> out_vendorid
            -> close_message
            -> close_output_pbs
            -> clonetochunk
            -> send_packet
            -> delete_event
            -> event_schedule
            -> reset_cur_state
          -> add_pending
          -> quick_outI1
            -> duplicate_state
            -> set_cur_state
            -> generate_msgid
            -> insert_state
            -> ike_alg_pfsgroup
            -> build_ke
              -> pcrc_func: quick_outI1_continue
                -> set_cur_state
                -> quick_outI1_tail
                  -> nat_traversal_change_port_lookup
                  -> init_pbs
                  -> out_struct
                  -> START_HASH_PAYLOAD
                  -> out_sa
                  -> ship_nonce
                  -> ship_KE
                  -> emit_subnet_id
                  -> nat_traversal_add_natoa
                  -> quick_mode_hash12
                    -> hmac_init_chunk
                    -> hmac_update
                    -> hmac_update_chunk
                    -> hmac_final
                  -> init_phase2_iv
                  -> encrypt_message
                  -> clonetochunk
                  -> send_packet
                  -> delete_event
                  -> event_schedule
            -> build_nonce
            -> reset_globals
        -> reset_cur_connection
        -> close_any
      -> initiate_opportunistic
      -> terminate_connection
    -> info_handle (rcv_info.c)
      -> accept
      -> ipsec_policy_readmsg
      -> info_lookuphostpair
        -> find_connection_for_clients
        -> find_client_connection
        -> state_with_serialno
        -> find_phase1_state
        -> idtoa
    -> pluto_crypto_helper_ready
      -> handle_helper_comm
      -> crypto_send_backlog
      -> (*cn->pcrc_func)
 
...... 待续 ......

http://blog.chinaunix.net/uid-127037-id-2919600.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pluto实现分析(2)——代码函数调用关系 的相关文章

  • C++面向对象求圆的周长和面积

    include
  • 物联网上行数据实现tcp 负载均衡和高可用架构 nginx + keepalived方案

    文章目录 需求介绍 架构设计 具体配置 nginx 配置 keepalived 配置 需求介绍 之前有做过一个物联网设备接入的项目 项目中会启动一个数据接入服务 TCP server 用来接收传感器设备上传的数据 数据接入服务需要分布式部署
  • 文件系统的基本认知笔记

    1 什么是文件系统 常规认知 Linux下的根目录 文件系统是操作系统用于明确存储设备 常见的是磁盘 也有基于NAND Flash的固态硬盘 或分区上的文件的方法 即在存储设备上组织文件的方法 这种所谓的方法就是文件管理系统 程序 简称文件
  • Mac下使用Git和Git客户端

    先到git官网 https git scm com download 下载安装 这里的git服务器使用本地虚拟机centos来模拟 创建一个用户 名为gitter 用于专门管理git相关 adduser gitter passwd gitt
  • 飞翔的圆(Flappy Bird)游戏源码完整版

    这个源码是一个不错的休闲类的游戏源码 飞翔的圆 Flappy Bird 游戏源码V1 0 本项目是一个仿Flappy Bird的小游戏 只不过是把Flappy Bird里面的鸟替换成了简单的圆 感兴趣的朋友可以研究一下 本项目默认编码GBK
  • 【Ubuntu安装 Nginx】

    ubuntu安装nginx 目前支持两种安装方式 一种是apt get的方式 另一种是根据包安装的方式 为方便我统一使用root用户 一 apt get安装nginx 切换至root用户 sudo su root apt get insta
  • C语言深度剖析——bool类型,浮点数相等比较。

    目录 序言 一 bool类型 1 C语言中到底有没有bool类型 2 VS中的BOOL类型 二 浮点数与 0 比较 1 浮点数的精度缺失 2 浮点数判断相等解决方案 3 判断浮点数是否为 0 最后 序言 C语言中有很多类型 但是bool我们
  • 【AI人工智能】 最强大的语言模型镜像 使用起来真的太方便了! 真的要解放代码思维了吗?

    个人主页 极客小俊 作者简介 web开发者 设计师 技术分享博主 希望大家多多支持一下 我们一起进步 如果文章对你有帮助的话 欢迎评论 点赞 收藏 加关注 前言 AI 在某些基础应用领域可以帮助你减少很多工作量 很强大哦 嘿嘿 优点 这玩意
  • VS2017 libTorch cpu 环境搭建

    C libTorch cpu 环境搭建 一 下载libTorch 下载地址 Start Locally PyTorch 可以在图中选择下载cuda版本或cpu版本的 以CPU Release版本的libTorch为例 下载地址为 https
  • Druid连接池 一个设置 removeAbandonedTimeout

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Druid连接池 一个设置 removeAbandonedTimeout 博客分类 数据库

随机推荐

  • 软件开发外包:你有什么选择

    在2019年 软件开发外包提供了各种各样的选择 成千上万的公司在全球范围内提供软件开发外包服务 您将有很多选择 具体取决于许多标准 例如地理位置 时差 语言要求 甚至文化相似性 2019年的软件开发外包状况如何 在过去的10到15年中 发达
  • 自己封装 vue3+ts 组件库并且发布到 NPM

    自己封装 vue3 ts 组件库并且发布到 NPM 创建项目 pnpm create vite 配置 package json 按照提示创建好项目 然后再 package json 中进行如下配置 name tribiani vue too
  • zip解压

    1 使用apache的ant解压 org apache tools zip 2 引入pom
  • [C++](26)智能指针

    文章目录 引入 智能指针的原理 C 智能指针及其问题 auto ptr unique ptr shared ptr weak ptr 删除器 引入 首先看下面这个程序 int div int a b cin gt gt a gt gt b
  • 服务器安装系统绑定网卡,HPE ProLiant 系列服务器Microsoft Windows Server 2012系统下网卡绑定方法...

    微软NIC组合 也称为负载平衡 故障转移 LBFO 允许多个网络适配器组合成一个 这样做的目的可以带来带宽聚合 解决网络连接失败过程中的故障转移 它应用于Windows Server 2012的所有版本中 包括核心版和图形界面完全版 1 打
  • 2022年,普通人如何找到适合的副业?

    这几天高温天气不适合户外工作和活动 坐在家里一动不动都能出汗 温度直飙升到40度以上了 同时我国的其他地方也阴雨连绵甚至有洪灾的可能性 每年夏季到来都会面临高温 暴雨 洪水 泥石流的恶劣天气 大自然也有脾气 所以我们还是要善待大自然爱护环境
  • mysql 创建function

    mysql 的function和procedure 仅对5 0版本后的有效 包括show function status等命令是没用的 以创建function为例 存储过程和这个差不多 懒得打字了 首先先在mysql 下运行 set glo
  • 基于MATLAB实现CAD技术及其应用完整教程(附上完整源码+数据+使用说明)

    MATLAB是一种功能强大的计算机辅助设计 CAD 工具 它为工程师和设计师提供了一种高效 灵活的方式来创建 分析和优化各种设计 在本文中 我们将介绍MATLAB如何实现CAD技术 并探讨其在不同领域中的应用 文章目录 介绍 部分源码 完整
  • 深度学习实验(四)——卷积神经网络编程

    深度学习实验四 卷积神经网络编程 本次实验练习使用torch nn中的类设计一个卷积神经网络进行MNIST手写体数字图像分类 name x 填写你的姓名 sid B02014152 填写你的学号 print 姓名 s 学号 s name s
  • 将cmd中命令输出保存为LOG文本文件

    演示 将Ping命令的加长包输出到D盘的ping log文本文件 1 在C 目录下创建文本文件这步可ping log 可以省略 偶尔提示无法创建文件时需要 2 在提示符下输入 ping www baidu com t l 100 gt C
  • 游戏开发物理引擎PhysX研究系列:示例项目SampleCustomGravity解读

    一 介绍 该示例项目的主要目的是模拟一个角色在行星上面移动时的模拟 主要对象有 行星 定义了质心 角色 使用CapsuleController 角色行为有 跳跃 重力 二 实现思路 物体朝向 每帧计算当前物体的朝向 计算物体质心与行星质心两
  • 将一个十六进制字符串转换为十进制数值的问题

    在程序中 我们有时需要将一个十六进制字符串转换为十进制数字 比如 char ptr 0x11 int n 0 我们想让n等于0x11 即17 通常我们在C中 想将一个字符串转换为一整形数字 通常会使用下面的方法 char ptr 123 i
  • 如何发送一个验证码到邮箱

    有时候经常会有一个网站注册时会发送一个验证码 然后通过这个验证这个验证码来确定这个邮箱不是不你的 你可能会觉得发送一个验证码到邮箱很高大上 看完这篇文章你一定会决定这件事不过如此 要发送验证码 首先我们要创建一个生成验证码的类 随机生成验证
  • seata1.3.0 系列学习(一、seata1.3.0 安装)

    下载seata 此处选用目前最新版本1 3 0 解压完成后 注 seata官方从1 0版本后不再提供sql脚本 以及nacos推送配置脚本 需要从0 9 0的版本复制 将红色框框的四个文件复制到1 3 0 conf目录下 执行db stor
  • Linux共享服务samba设置

    文章目录 一 Samba服务器介绍 1 samba是什么 2 Samba的应用环境 3 Samba的工作原理 二 Samba服务基础 三 Centos7 samba共享服务实验 1 安装共享服务 2 修改smb conf配置文件 设置共享
  • 基于jquery的自定义显示消息数量

    根据需求简单的实现一个小功能控件 暂时不支持扩展 xxxxxxx iconCountPlugin options start isOffset 三个参数 自定义样式 是否禁止图标位置随浏览器窗口变化而变化 是否禁用偏移量这个是调用 后面俩参
  • Android 悬浮于输入法软键盘顶部的输入框

    Android app 开发中经常会遇到一些输入框要悬浮到软键盘上方的需求 大致做法有做法如下 Android输入法软键盘悬浮 最常见的一种方法是通过给ViewTreeObserver添加ViewTreeObserver OnGlobalL
  • C++11 智能指针详解

    C 程序设计中使用堆内存是非常频繁的操作 堆内存的申请和释放都由程序员自己管理 程序员自己 管理堆内存可以提高了程序的效率 但是整体来说堆内存的管理是麻烦的 C 11 中引入了智能指针的 概念 方便管理堆内存 使用普通指针 容易造成堆内存泄
  • MS08-067 漏洞复现报告

    漏洞简介 MS08 067漏洞全称是 Windows Server服务RPC请求缓冲区溢出漏洞 攻击者利用受害者主机默认开放的SMB服务端口445 发送特殊RPC Remote Procedure Call 远程过程调用 请求 造成栈缓冲区
  • pluto实现分析(2)——代码函数调用关系

    本文档的Copyleft归yfydz所有 使用GPL发布 可以自由拷贝 转载 转载时请保持文档的完整性 严禁用于任何商业用途 msn yfydz no1 hotmail com 来源 http yfydz cublog cn 4 代码函数调