# Copyright (c) 2018 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. add_definitions (-DWITH_LIBSSL=1) include_directories(${OPENSSL_INCLUDE_DIR}) set(VNET_SRCS adj/adj_bfd.c adj/adj.c adj/adj_delegate.c adj/adj_glean.c adj/adj_l2.c adj/adj_mcast.c adj/adj_midchain.c adj/adj_nbr.c adj/adj_nsh.c adj/rewrite.c bfd/bfd_api.c bfd/bfd_cli.c bfd/bfd_main.c bfd/bfd_protocol.c bfd/bfd_udp.c bier/bier_api.c bier/bier_bift_table.c bier/bier_bit_string.c bier/bier_disp_dispatch_node.c bier/bier_disp_entry.c bier/bier_disp_lookup_node.c bier/bier_disp_table.c bier/bier_drop.c bier/bier_entry.c bier/bier_fmask.c bier/bier_fmask_db.c bier/bier_imp.c bier/bier_imp_node.c bier/bier_input.c bier/bier_lookup.c bier/bier_output.c bier/bier_table.c bier/bier_test.c bier/bier_types.c bier/bier_update.c bonding/bond_api.c bonding/cli.c bonding/device.c bonding/node.c buffer.c classify/classify_api.c classify/flow_classify.c classify/flow_classify_node.c classify/in_out_acl.c classify/ip_classify.c classify/policer_classify.c classify/vnet_classify.c config.c cop/cop_api.c cop/cop.c cop/ip4_whitelist.c cop/ip6_whitelist.c cop/node1.c devices/af_packet/af_packet_api.c devices/af_packet/af_packet.c devices/af_packet/cli.c devices/af_packet/device.c devices/af_packet/node.c devices/devices.c devices/netlink.c devices/netmap/cli.c devices/netmap/device.c devices/netmap/netmap_api.c devices/netmap/netmap.c devices/netmap/node.c devices/pipe/pipe_api.c devices/pipe/pipe.c devices/tap/cli.c devices/tap/tap.c devices/tap/tapv2_api.c devices/virtio/device.c devices/virtio/node.c devices/virtio/vhost_user_api.c devices/virtio/vhost_user.c devices/virtio/vhost_user_input.c devices/virtio/vhost_user_output.c devices/virtio/virtio.c dhcp/client.c dhcp/dhcp4_proxy_node.c dhcp/dhcp6_client_common_dp.c dhcp/dhcp6_ia_na_client_cp.c dhcp/dhcp6_ia_na_client_dp.c dhcp/dhcp6_pd_client_cp.c dhcp/dhcp6_pd_client_dp.c dhcp/dhcp6_proxy_node.c dhcp/dhcp_api.c dhcp/dhcp_client_detect.c dhcp/dhcp_proxy.c dns/dns.c dns/reply_node.c dns/request_node.c dns/resolver_process.c dpo/classify_dpo.c dpo/dpo.c dpo/drop_dpo.c dpo/dvr_dpo.c dpo/interface_rx_dpo.c dpo/interface_tx_dpo.c dpo/ip6_ll_dpo.c dpo/ip_null_dpo.c dpo/l3_proxy_dpo.c dpo/load_balance.c dpo/load_balance_map.c dpo/lookup_dpo.c dpo/mpls_disposition.c dpo/mpls_label_dpo.c dpo/punt_dpo.c dpo/receive_dpo.c dpo/replicate_dpo.c ethernet/arp.c ethernet/format.c ethernet/init.c ethernet/interface.c ethernet/node.c ethernet/p2p_ethernet_api.c ethernet/p2p_ethernet.c ethernet/p2p_ethernet_input.c ethernet/pg.c ethernet/sfp.c feature/feature_api.c feature/feature.c feature/registration.c fib/fib_api.c fib/fib_attached_export.c fib/fib_bfd.c fib/fib.c fib/fib_entry.c fib/fib_entry_cover.c fib/fib_entry_delegate.c fib/fib_entry_src_adj.c fib/fib_entry_src_api.c fib/fib_entry_src.c fib/fib_entry_src_default_route.c fib/fib_entry_src_interface.c fib/fib_entry_src_interpose.c fib/fib_entry_src_lisp.c fib/fib_entry_src_mpls.c fib/fib_entry_src_rr.c fib/fib_entry_src_special.c fib/fib_node.c fib/fib_node_list.c fib/fib_path.c fib/fib_path_ext.c fib/fib_path_list.c fib/fib_table.c fib/fib_test.c fib/fib_types.c fib/fib_urpf_list.c fib/fib_walk.c fib/ip4_fib.c fib/ip6_fib.c fib/mpls_fib.c flow/flow.c flow/flow_cli.c geneve/decap.c geneve/encap.c geneve/geneve_api.c geneve/geneve.c gre/gre_api.c gre/gre.c gre/interface.c gre/node.c gre/pg.c handoff.c hdlc/hdlc.c hdlc/node.c hdlc/pg.c interface_api.c interface.c interface_cli.c interface_format.c interface_output.c interface_stats.c ipfix-export/flow_api.c ipfix-export/flow_report.c ipfix-export/flow_report_classify.c ip/format.c ip/icmp4.c ip/icmp6.c ip/ip46_cli.c ip/ip4_format.c ip/ip4_forward.c ip/ip4_input.c ip/ip4_mtrie.c ip/ip4_options.c ip/ip4_pg.c ip/ip4_punt_drop.c ip/ip4_reassembly.c ip/ip4_source_and_port_range_check.c ip/ip4_source_check.c ip/ip6_format.c ip/ip6_forward.c ip/ip6_hop_by_hop.c ip/ip6_input.c ip/ip6_ll_table.c ip/ip6_ll_types.c ip/ip6_neighbor.c ip/ip6_pg.c ip/ip6_punt_drop.c ip/ip6_reassembly.c ip/ip_api.c ip/ip.c ip/ip_checksum.c ip/ip_frag.c ip/ip_init.c ip/ip_in_out_acl.c ipip/ipip_api.c ipip/ipip.c ipip/ipip_cli.c ip/ip_neighbor.c ipip/node.c ipip/sixrd.c ip/ip_types_api.c ip/lookup.c ip/ping.c ip/punt_api.c ip/punt.c ip/rd_cp.c ipsec/ah_decrypt.c ipsec/ah_encrypt.c ipsec/esp_decrypt.c ipsec/esp_encrypt.c ipsec/esp_format.c ipsec-gre/interface.c ipsec-gre/ipsec_gre_api.c ipsec-gre/ipsec_gre.c ipsec-gre/node.c ipsec/ikev2.c ipsec/ikev2_cli.c ipsec/ikev2_crypto.c ipsec/ikev2_format.c ipsec/ikev2_payload.c ipsec/ipsec_api.c ipsec/ipsec.c ipsec/ipsec_cli.c ipsec/ipsec_format.c ipsec/ipsec_if.c ipsec/ipsec_if_in.c ipsec/ipsec_input.c ipsec/ipsec_output.c l2/feat_bitmap.c l2/l2_api.c l2/l2_bd.c l2/l2_bvi.c l2/l2_efp_filter.c l2/l2_fib.c l2/l2_flood.c l2/l2_fwd.c l2/l2_in_out_acl.c l2/l2_input.c l2/l2_input_classify.c l2/l2_input_vtr.c l2/l2_learn.c l2/l2_output.c l2/l2_output_classify.c l2/l2_patch.c l2/l2_rw.c l2/l2_vtr.c l2/l2_xcrw.c l2tp/decap.c l2tp/encap.c l2tp/l2tp_api.c l2tp/l2tp.c l2tp/pg.c lawful-intercept/lawful_intercept.c lawful-intercept/node.c lisp-cp/control.c lisp-cp/gid_dictionary.c lisp-cp/lisp_api.c lisp-cp/lisp_cli.c lisp-cp/lisp_cp_dpo.c lisp-cp/lisp_msg_serdes.c lisp-cp/lisp_types.c lisp-cp/one_api.c lisp-cp/one_cli.c lisp-cp/packets.c lisp-gpe/decap.c lisp-gpe/interface.c lisp-gpe/lisp_gpe_adjacency.c lisp-gpe/lisp_gpe_api.c lisp-gpe/lisp_gpe.c lisp-gpe/lisp_gpe_fwd_entry.c lisp-gpe/lisp_gpe_sub_interface.c lisp-gpe/lisp_gpe_tenant.c lisp-gpe/lisp_gpe_tunnel.c llc/llc.c llc/node.c llc/pg.c lldp/lldp_api.c lldp/lldp_cli.c lldp/lldp_input.c lldp/lldp_node.c lldp/lldp_output.c mfib/ip4_mfib.c mfib/ip6_mfib.c mfib/mfib_entry.c mfib/mfib_forward.c mfib/mfib_itf.c mfib/mfib_signal.c mfib/mfib_table.c mfib/mfib_test.c mfib/mfib_types.c misc.c mpls/interface.c mpls/mpls_api.c mpls/mpls.c mpls/mpls_features.c mpls/mpls_input.c mpls/mpls_lookup.c mpls/mpls_output.c mpls/mpls_tunnel.c mpls/pg.c osi/node.c osi/osi.c osi/pg.c pg/cli.c pg/edit.c pg/init.c pg/input.c pg/output.c pg/pg_api.c pg/stream.c policer/node_funcs.c policer/policer_api.c policer/policer.c policer/xlate.c ppp/node.c ppp/pg.c ppp/ppp.c qos/qos_api.c qos/qos_egress_map.c qos/qos_mark.c qos/qos_record.c qos/qos_types.c replication.c sctp/sctp_api.c sctp/sctp.c sctp/sctp_format.c sctp/sctp_input.c sctp/sctp_output.c sctp/sctp_pg.c session/application.c session/application_interface.c session/application_namespace.c session-apps/echo_client.c session-apps/echo_server.c session-apps/http_server.c session-apps/proxy.c session/segment_manager.c session/session_api.c session/session.c session/session_cli.c session/session_lookup.c session/session_node.c session/session_rules_table.c session/session_table.c session/session_test.c session/transport.c snap/node.c snap/pg.c snap/snap.c span/node.c span/span_api.c span/span.c srmpls/sr_mpls_api.c srmpls/sr_mpls_policy.c srmpls/sr_mpls_steering.c srp/format.c srp/interface.c srp/node.c srp/pg.c srv6/sr_api.c srv6/sr.c srv6/sr_localsid.c srv6/sr_policy_rewrite.c srv6/sr_steering.c tcp/tcp_api.c tcp/tcp.c tcp/tcp_format.c tcp/tcp_input.c tcp/tcp_newreno.c tcp/tcp_output.c tcp/tcp_pg.c tcp/tcp_syn_filter4.c tls/tls.c udp/udp_api.c udp/udp.c udp/udp_encap.c udp/udp_encap_node.c udp/udp_format.c udp/udp_input.c udp/udp_local.c udp/udp_pg.c unix/gdb_funcs.c unix/pcap.c unix/tap_api.c unix/tapcli.c unix/tuntap.c util/radix.c util/refcount.c util/trajectory.c vxlan/decap.c vxlan/encap.c vxlan-gpe/decap.c vxlan-gpe/encap.c vxlan-gpe/vxlan_gpe_api.c vxlan-gpe/vxlan_gpe.c vxlan/vxlan_api.c vxlan/vxlan.c ) vpp_add_api_files(vnet_api_headers vxlan-gpe/vxlan_gpe.api ip/ip.api ip/rd_cp.api ip/ip_types.api ip/punt.api fib/fib_types.api devices/virtio/vhost_user.api devices/af_packet/af_packet.api devices/tap/tapv2.api devices/netmap/netmap.api devices/pipe/pipe.api l2tp/l2tp.api bier/bier.api ipsec-gre/ipsec_gre.api cop/cop.api ipsec/ipsec.api lisp-gpe/lisp_gpe.api lldp/lldp.api vxlan/vxlan.api srmpls/sr_mpls.api pg/pg.api bonding/bond.api dns/dns.api feature/feature.api dhcp/dhcp.api dhcp/dhcp6_pd_client_cp.api dhcp/dhcp6_ia_na_client_cp.api sctp/sctp.api ipip/ipip.api qos/qos.api interface.api udp/udp.api lisp-cp/one.api lisp-cp/lisp.api mpls/mpls.api l2/l2.api geneve/geneve.api tcp/tcp.api unix/tap.api srv6/sr.api gre/gre.api span/span.api policer/policer.api session/session.api ethernet/p2p_ethernet.api ipfix-export/ipfix_export.api classify/classify.api bfd/bfd.api ) vpp_add_header_files(vnet l3_types.h vxlan-gpe/vxlan_gpe.h vxlan-gpe/vxlan_gpe_packet.h vxlan-gpe/vxlan_gpe_error.def ip/icmp6.h ip/ip_source_and_port_range_check.h ip/ports.def ip/ip6_to_ip4.h ip/ip4_error.h ip/ip6_error.h ip/ip4_packet.h ip/lookup.h ip/ip_neighbor.h ip/ip6_hop_by_hop_packet.h ip/format.h ip/ip4_mtrie.h ip/icmp4.h ip/icmp46_packet.h ip/igmp_packet.h ip/protocols.def ip/ip6_neighbor.h ip/ip4.h ip/ip6_hop_by_hop.h ip/punt.h ip/ip6.h ip/ip6_packet.h ip/punt_error.def ip/ip.h ip/ip_packet.h ip/ip4_to_ip6.h adj/adj_nbr.h adj/adj_glean.h adj/adj_nsh.h adj/adj.h adj/adj_types.h adj/rewrite.h fib/fib_table.h fib/fib_entry.h fib/fib.h fib/ip4_fib.h fib/fib_node.h fib/ip6_fib.h fib/fib_types.h fib/fib_node_list.h fib/fib_entry_delegate.h devices/virtio/virtio.h devices/virtio/vhost_user.h devices/af_packet/af_packet.h devices/devices.h devices/tap/tap.h devices/netmap/netmap.h devices/netlink.h devices/pipe/pipe.h vnet_msg_enum.h dpo/load_balance.h dpo/dpo.h dpo/punt_dpo.h dpo/lookup_dpo.h dpo/drop_dpo.h dpo/classify_dpo.h dpo/receive_dpo.h dpo/ip_null_dpo.h dpo/replicate_dpo.h l2tp/packet.h l2tp/l2tp.h global_funcs.h bier/bier_types.h bier/bier_entry.h bier/bier_table.h bier/bier_update.h ipsec-gre/ipsec_gre.h ipsec-gre/error.def interface_funcs.h lawful-intercept/lawful_intercept.h util/radix.h util/refcount.h cop/cop.h ipsec/ikev2.h ipsec/ikev2_priv.h ipsec/ah.h ipsec/esp.h ipsec/ipsec.h flow/flow.h lisp-gpe/lisp_gpe_packet.h lisp-gpe/lisp_gpe_error.def lisp-gpe/lisp_gpe_fwd_entry.h lisp-gpe/lisp_gpe_tenant.h lisp-gpe/lisp_gpe.h lldp/lldp.h lldp/lldp_protocol.h pipeline.h hdlc/packet.h hdlc/hdlc.h hdlc/error.def vxlan/vxlan_packet.h vxlan/vxlan.h vxlan/vxlan_error.def srmpls/sr_mpls.h pg/edit.h pg/pg.h bonding/node.h dns/dns.h feature/feature.h dhcp/dhcp6_pd_client_dp.h dhcp/client.h dhcp/dhcp4_proxy_error.def dhcp/dhcp4_packet.h dhcp/dhcp6_proxy_error.def dhcp/dhcp6_client_common_dp.h dhcp/dhcp_proxy.h dhcp/dhcp6_ia_na_client_dp.h dhcp/dhcp6_packet.h tls/tls.h sctp/sctp_error.def sctp/sctp_packet.h sctp/sctp_timer.h sctp/sctp.h ipip/ipip.h handoff.h api_errno.h osi/osi.h udp/udp_error.def udp/udp_packet.h udp/udp.h ppp/packet.h ppp/ppp.h ppp/error.def lisp-cp/lisp_types.h lisp-cp/lisp_cp_messages.h lisp-cp/packets.h lisp-cp/gid_dictionary.h lisp-cp/lisp_msg_serdes.h lisp-cp/control.h vnet.h mpls/packet.h mpls/mpls.h mpls/mpls_tunnel.h mpls/mpls_types.h mpls/error.def mfib/mfib_types.h mfib/ip4_mfib.h mfib/mfib_table.h interface.h plugin/plugin.h l2/l2_xcrw.h l2/l2_output.h l2/l2_rw.h l2/l2_fib.h l2/l2_vtr.h l2/feat_bitmap.h l2/l2_flood.h l2/l2_classify.h l2/l2_bd.h l2/l2_efp_filter.h l2/l2_fwd.h l2/l2_input.h l2/l2_input_vtr.h l2/l2_bvi.h geneve/geneve.h geneve/geneve_error.def geneve/geneve_packet.h tcp/tcp_packet.h tcp/tcp_debug.h tcp/tcp_timer.h tcp/tcp_error.def tcp/tcp.h session-apps/echo_client.h session-apps/proxy.h unix/pcap.h unix/tuntap.h unix/tapcli.h srv6/sr.h srv6/sr_packet.h gre/packet.h gre/gre.h gre/error.def span/span.h policer/xlate.h policer/policer.h policer/police.h config.h buffer.h llc/llc.h session/session_lookup.h session/mma_template.c session/application.h session/segment_manager.h session/mma_template.h session/session_rules_table.h session/session.h session/transport.h session/session_debug.h session/mma_16.h session/mma_40.h session/session_table.h session/transport_interface.h session/application_namespace.h session/stream_session.h session/application_interface.h replication.h ethernet/packet.h ethernet/arp.h ethernet/p2p_ethernet.h ethernet/sfp.h ethernet/types.def ethernet/arp_packet.h ethernet/ethernet.h ethernet/error.def ipfix-export/ipfix_info_elements.h ipfix-export/flow_report.h ipfix-export/flow_report_classify.h ipfix-export/ipfix_packet.h snap/snap.h classify/flow_classify.h classify/in_out_acl.h classify/vnet_classify.h classify/policer_classify.h bfd/bfd_udp.h bfd/bfd_protocol.h bfd/bfd_main.h srp/packet.h srp/srp.h ) add_library(vnet SHARED ${VNET_SRCS}) vpp_library_set_multiarch_sources(vnet bonding/node.c ip/ip4_forward.c ip/ip4_input.c l2/l2_output.c devices/virtio/vhost_user_input.c devices/virtio/vhost_user_output.c ) target_link_libraries(vnet vlib ${OPENSSL_LIBRARIES}) add_dependencies(vnet api_headers) # # Install # install(TARGETS vnet DESTINATION lib)