1 # Copyright (c) 2018-2020 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
14 add_definitions (-DWITH_LIBSSL=1)
15 include_directories(${OPENSSL_INCLUDE_DIR})
20 unset(VNET_MULTIARCH_SOURCES)
22 ##############################################################################
24 ##############################################################################
25 list(APPEND VNET_SOURCES
43 list(APPEND VNET_MULTIARCH_SOURCES
49 list(APPEND VNET_HEADERS
74 ethernet/ethernet_format_fns.h
77 list(APPEND VNET_API_FILES
85 ##############################################################################
87 ##############################################################################
88 list(APPEND VNET_SOURCES
95 list(APPEND VNET_MULTIARCH_SOURCES
99 list(APPEND VNET_HEADERS
105 list(APPEND VNET_API_FILES
107 policer/policer_types.api
110 ##############################################################################
111 # Binary API compatibility until vpp 20.12, see the ADL plugin...
112 ##############################################################################
114 list(APPEND VNET_SOURCES
118 list(APPEND VNET_API_FILES cop/cop.api)
120 ##############################################################################
121 # Layer 2 protocols go here
122 ##############################################################################
124 ##############################################################################
125 # Layer 2 protocol: Ethernet
126 ##############################################################################
127 list(APPEND VNET_SOURCES
128 ethernet/arp_packet.c
129 ethernet/ethernet_types_api.c
133 ethernet/mac_address.c
137 ethernet/p2p_ethernet.c
138 ethernet/p2p_ethernet_input.c
139 ethernet/p2p_ethernet_api.c
142 list(APPEND VNET_MULTIARCH_SOURCES
144 ethernet/p2p_ethernet_input.c
147 list(APPEND VNET_HEADERS
150 ethernet/mac_address.h
154 ethernet/p2p_ethernet.h
155 ethernet/arp_packet.h
158 list(APPEND VNET_API_FILES
159 ethernet/p2p_ethernet.api
160 ethernet/ethernet_types.api)
162 ##############################################################################
163 # Layer 2 protocol: Ethernet bridging
164 ##############################################################################
165 list(APPEND VNET_SOURCES
172 l2/l2_input_classify.c
173 l2/l2_output_classify.c
183 l2/l2_in_out_feat_arc.c
191 list(APPEND VNET_MULTIARCH_SOURCES
197 l2/l2_in_out_feat_arc.c
198 l2/l2_input_classify.c
200 l2/l2_output_classify.c
210 list(APPEND VNET_HEADERS
227 list(APPEND VNET_API_FILES l2/l2.api)
229 ##############################################################################
230 # Layer 2 protocol: SRP
231 ##############################################################################
232 list(APPEND VNET_SOURCES
239 list(APPEND VNET_HEADERS
244 ##############################################################################
245 # Layer 2 protocol: PPP
246 ##############################################################################
247 list(APPEND VNET_SOURCES
253 list(APPEND VNET_HEADERS
259 ##############################################################################
260 # Layer 2 protocol: HDLC
261 ##############################################################################
262 list(APPEND VNET_SOURCES
268 list(APPEND VNET_HEADERS
274 ##############################################################################
275 # Layer 2 protocol: LLC
276 ##############################################################################
277 list(APPEND VNET_SOURCES
283 list(APPEND VNET_HEADERS
287 ##############################################################################
288 # Layer 2 protocol: SNAP
289 ##############################################################################
290 list(APPEND VNET_SOURCES
296 list(APPEND VNET_HEADERS
300 ##############################################################################
302 ##############################################################################
303 list(APPEND VNET_SOURCES
310 list(APPEND VNET_MULTIARCH_SOURCES
314 list(APPEND VNET_HEADERS
317 vxlan/vxlan_error.def
320 list(APPEND VNET_MULTIARCH_SOURCES vxlan/decap.c)
322 list(APPEND VNET_API_FILES vxlan/vxlan.api)
324 ##############################################################################
326 ##############################################################################
327 list(APPEND VNET_SOURCES
334 list(APPEND VNET_HEADERS
338 list(APPEND VNET_MULTIARCH_SOURCES bonding/node.c bonding/device.c)
339 list(APPEND VNET_API_FILES bonding/bond.api)
341 ##############################################################################
342 # Layer 2/3 "classify"
343 ##############################################################################
344 list(APPEND VNET_SOURCES
345 classify/vnet_classify.c
346 classify/trace_classify.h
347 classify/ip_classify.c
348 classify/in_out_acl.c
349 classify/policer_classify.c
350 classify/flow_classify.c
351 classify/flow_classify_node.c
352 classify/vnet_classify.h
353 classify/classify_api.c
356 list(APPEND VNET_MULTIARCH_SOURCES
357 classify/ip_classify.c
358 classify/flow_classify_node.c
361 list(APPEND VNET_HEADERS
362 classify/vnet_classify.h
363 classify/trace_classify.h
364 classify/in_out_acl.h
365 classify/policer_classify.h
366 classify/flow_classify.h
369 list(APPEND VNET_API_FILES classify/classify.api)
371 ##############################################################################
372 # Layer 3 protocols go here
373 ##############################################################################
375 ##############################################################################
376 # Layer 3 protocol: IP v4/v6
377 ##############################################################################
378 list(APPEND VNET_SOURCES
392 ip/ip4_source_and_port_range_check.c
393 ip/reass/ip4_full_reass.c
394 ip/reass/ip4_sv_reass.c
404 ip/reass/ip6_full_reass.c
405 ip/reass/ip6_sv_reass.c
422 list(APPEND VNET_MULTIARCH_SOURCES
424 ip/reass/ip4_full_reass.c
426 ip/reass/ip6_full_reass.c
427 ip/reass/ip4_sv_reass.c
429 ip/reass/ip6_full_reass.c
430 ip/reass/ip6_sv_reass.c
437 list(APPEND VNET_HEADERS
451 ip/ip6_hop_by_hop_packet.h
457 ip/ip_source_and_port_range_check.h
466 list(APPEND VNET_API_FILES
471 list(APPEND VNET_MULTIARCH_SOURCES
477 ##############################################################################
479 ##############################################################################
480 list(APPEND VNET_SOURCES
481 ip-neighbor/ip_neighbor.c
482 ip-neighbor/ip_neighbor_api.c
483 ip-neighbor/ip_neighbor_dp.c
484 ip-neighbor/ip_neighbor_types.c
485 ip-neighbor/ip_neighbor_watch.c
486 ip-neighbor/ip4_neighbor.c
487 ip-neighbor/ip6_neighbor.c
490 list(APPEND VNET_HEADERS
491 ip-neighbor/ip_neighbor.h
492 ip-neighbor/ip_neighbor_types.h
495 list(APPEND VNET_API_FILES
496 ip-neighbor/ip_neighbor.api
499 ##############################################################################
500 # Bidirectional Forwarding Detection
501 ##############################################################################
503 list(APPEND VNET_HEADERS
510 list(APPEND VNET_SOURCES
519 list(APPEND VNET_API_FILES bfd/bfd.api)
521 ##############################################################################
523 ##############################################################################
525 list(APPEND VNET_SOURCES
533 list(APPEND VNET_HEADERS
537 list(APPEND VNET_MULTIARCH_SOURCES crypto/node.c)
539 list(APPEND VNET_API_FILES crypto/crypto.api)
541 ##############################################################################
542 # Layer 3 protocol: IPSec
543 ##############################################################################
544 list(APPEND VNET_SOURCES
548 ipsec/ipsec_handoff.c
554 ipsec/ipsec_spd_policy.c
563 ipsec/ipsec_types_api.c
566 list(APPEND VNET_MULTIARCH_SOURCES
571 ipsec/ipsec_handoff.c
577 list(APPEND VNET_API_FILES ipsec/ipsec_types.api)
578 list(APPEND VNET_API_FILES ipsec/ipsec.api)
580 list(APPEND VNET_SOURCES
584 list(APPEND VNET_HEADERS
587 ipsec/ipsec_spd_policy.h
590 ipsec/ipsec_types_api.h
596 ##############################################################################
597 # Layer 3 protocol: osi
598 ##############################################################################
599 list(APPEND VNET_SOURCES
605 list(APPEND VNET_HEADERS
609 ##############################################################################
610 # Layer 4 protocol: tcp
611 ##############################################################################
612 list(APPEND VNET_SOURCES
616 tcp/tcp_syn_filter4.c
628 list(APPEND VNET_MULTIARCH_SOURCES
631 tcp/tcp_syn_filter4.c
634 list(APPEND VNET_HEADERS
647 list(APPEND VNET_API_FILES tcp/tcp.api)
649 ##############################################################################
650 # Layer 4 protocol: udp
651 ##############################################################################
652 list(APPEND VNET_SOURCES
664 list(APPEND VNET_MULTIARCH_SOURCES
669 list(APPEND VNET_HEADERS
675 list(APPEND VNET_API_FILES udp/udp.api)
677 ##############################################################################
678 # Tunnel protocol: gre
679 ##############################################################################
680 list(APPEND VNET_SOURCES
688 list(APPEND VNET_MULTIARCH_SOURCES
693 list(APPEND VNET_HEADERS
699 list(APPEND VNET_API_FILES gre/gre.api)
701 ##############################################################################
702 # Tunnel protocol: ipip
703 ##############################################################################
704 list(APPEND VNET_SOURCES
712 list(APPEND VNET_MULTIARCH_SOURCES
716 list(APPEND VNET_HEADERS
720 list(APPEND VNET_API_FILES
724 ##############################################################################
726 ##############################################################################
727 list(APPEND VNET_SOURCES
729 tunnel/tunnel_types_api.c
732 list(APPEND VNET_API_FILES
733 tunnel/tunnel_types.api
736 list(APPEND VNET_HEADERS
741 ##############################################################################
742 # Tunnel protocol: gre+mpls
743 ##############################################################################
744 list(APPEND VNET_SOURCES
756 list(APPEND VNET_MULTIARCH_SOURCES
763 list(APPEND VNET_HEADERS
771 list(APPEND VNET_API_FILES mpls/mpls.api)
773 ##############################################################################
774 # Tunnel protocol: vxlan-gbp
775 ##############################################################################
776 list(APPEND VNET_SOURCES
779 vxlan-gbp/vxlan_gbp_api.c
780 vxlan-gbp/vxlan_gbp.c
781 vxlan-gbp/vxlan_gbp_packet.c
784 list (APPEND VNET_MULTIARCH_SOURCES
789 list(APPEND VNET_HEADERS
790 vxlan-gbp/vxlan_gbp.h
791 vxlan-gbp/vxlan_gbp_packet.h
792 vxlan-gbp/vxlan_gbp_error.def
795 list(APPEND VNET_API_FILES vxlan-gbp/vxlan_gbp.api)
797 ##############################################################################
798 # Tunnel protocol: vxlan-gpe
799 ##############################################################################
801 list(APPEND VNET_SOURCES
802 vxlan-gpe/vxlan_gpe.c
805 vxlan-gpe/vxlan_gpe_api.c
808 list (APPEND VNET_MULTIARCH_SOURCES
812 list(APPEND VNET_HEADERS
813 vxlan-gpe/vxlan_gpe.h
814 vxlan-gpe/vxlan_gpe_packet.h
815 vxlan-gpe/vxlan_gpe_error.def
818 list(APPEND VNET_API_FILES vxlan-gpe/vxlan_gpe.api)
820 ##############################################################################
821 # ipv6 segment routing
822 ##############################################################################
824 list(APPEND VNET_SOURCES
827 srv6/sr_policy_rewrite.c
832 list(APPEND VNET_HEADERS
837 list(APPEND VNET_API_FILES
842 ##############################################################################
843 # mpls segment routing
844 ##############################################################################
846 list(APPEND VNET_SOURCES
847 srmpls/sr_mpls_policy.c
848 srmpls/sr_mpls_steering.c
852 list(APPEND VNET_HEADERS
856 list(APPEND VNET_API_FILES
861 ##############################################################################
862 # IPFIX / netflow v10
863 ##############################################################################
864 list(APPEND VNET_SOURCES
865 ipfix-export/flow_report.c
866 ipfix-export/flow_api.c
869 list(APPEND VNET_HEADERS
870 ipfix-export/flow_report.h
871 ipfix-export/ipfix_info_elements.h
872 ipfix-export/ipfix_packet.h
875 list(APPEND VNET_API_FILES ipfix-export/ipfix_export.api)
877 ##############################################################################
879 ##############################################################################
880 list(APPEND VNET_SOURCES
887 list(APPEND VNET_HEADERS
890 gso/hdr_offset_parser.h
894 list(APPEND VNET_API_FILES
898 ##############################################################################
899 # IPFIX classify code
900 ##############################################################################
902 list(APPEND VNET_SOURCES
903 ipfix-export/flow_report_classify.c
906 list(APPEND VNET_HEADERS
907 ipfix-export/flow_report_classify.h
910 ##############################################################################
912 ##############################################################################
914 list(APPEND VNET_SOURCES
915 lawful-intercept/lawful_intercept.c
916 lawful-intercept/node.c
919 list(APPEND VNET_MULTIARCH_SOURCES
920 lawful-intercept/node.c
923 list(APPEND VNET_HEADERS
924 lawful-intercept/lawful_intercept.h
927 ##############################################################################
928 # SPAN (port mirroring)
929 ##############################################################################
931 list(APPEND VNET_SOURCES
937 list(APPEND VNET_MULTIARCH_SOURCES
941 list(APPEND VNET_HEADERS
945 list(APPEND VNET_API_FILES span/span.api)
947 ##############################################################################
949 ##############################################################################
951 list(APPEND VNET_SOURCES
961 list(APPEND VNET_HEADERS
966 list(APPEND VNET_API_FILES pg/pg.api)
968 ##############################################################################
970 ##############################################################################
972 list(APPEND VNET_SOURCES
974 devices/virtio/device.c
975 devices/virtio/format.c
976 devices/virtio/node.c
978 devices/virtio/vhost_user.c
979 devices/virtio/vhost_user_input.c
980 devices/virtio/vhost_user_output.c
981 devices/virtio/vhost_user_api.c
982 devices/virtio/virtio.c
983 devices/virtio/virtio_api.c
984 devices/virtio/virtio_pci_legacy.c
985 devices/virtio/virtio_pci_modern.c
986 devices/virtio/virtio_types_api.c
989 list(APPEND VNET_HEADERS
991 devices/virtio/virtio.h
992 devices/virtio/virtio_std.h
993 devices/virtio/virtio_pci_legacy.h
994 devices/virtio/virtio_pci_modern.h
995 devices/virtio/vhost_std.h
996 devices/virtio/vhost_user.h
997 devices/virtio/virtio_types_api.h
1000 list(APPEND VNET_MULTIARCH_SOURCES
1001 devices/virtio/vhost_user_input.c
1002 devices/virtio/vhost_user_output.c
1003 devices/virtio/node.c
1004 devices/af_packet/node.c
1005 devices/virtio/device.c
1008 list(APPEND VNET_API_FILES
1009 devices/virtio/vhost_user.api
1010 devices/virtio/virtio.api
1011 devices/virtio/virtio_types.api
1014 ##############################################################################
1015 # tap interface (with virtio backend)
1016 ##############################################################################
1018 list(APPEND VNET_SOURCES
1021 devices/tap/tapv2_api.c
1024 list(APPEND VNET_HEADERS
1028 list(APPEND VNET_API_FILES
1029 devices/tap/tapv2.api
1032 ##############################################################################
1033 # tap interface (with virtio backend)
1034 ##############################################################################
1036 list(APPEND VNET_SOURCES
1037 devices/pipe/pipe_api.c
1041 list(APPEND VNET_HEADERS
1045 list(APPEND VNET_API_FILES devices/pipe/pipe.api)
1047 ##############################################################################
1048 # session managmeent
1049 ##############################################################################
1051 list(APPEND VNET_SOURCES
1053 session/session_debug.c
1054 session/session_table.c
1055 session/session_rules_table.c
1056 session/session_lookup.c
1057 session/session_node.c
1059 session/application.c
1060 session/application_worker.c
1061 session/session_cli.c
1062 session/application_interface.c
1063 session/application_local.c
1064 session/application_namespace.c
1065 session/segment_manager.c
1066 session/session_api.c
1069 list(APPEND VNET_HEADERS
1071 session/session_table.h
1072 session/session_rules_table.h
1073 session/session_types.h
1074 session/session_lookup.h
1075 session/application.h
1077 session/transport_types.h
1078 session/application_interface.h
1079 session/application_local.h
1080 session/application_namespace.h
1081 session/session_debug.h
1082 session/segment_manager.h
1083 session/mma_template.h
1084 session/mma_template.c
1089 list(APPEND VNET_API_FILES session/session.api)
1091 ##############################################################################
1093 ##############################################################################
1095 list(APPEND VNET_SOURCES
1099 list(APPEND VNET_HEADERS
1104 ##############################################################################
1105 # Linux packet interface
1106 ##############################################################################
1108 list(APPEND VNET_SOURCES
1109 devices/af_packet/af_packet.c
1110 devices/af_packet/device.c
1111 devices/af_packet/node.c
1112 devices/af_packet/cli.c
1113 devices/af_packet/af_packet_api.c
1116 list(APPEND VNET_MULTIARCH_SOURCES
1117 devices/af_packet/device.c
1120 list(APPEND VNET_HEADERS
1121 devices/af_packet/af_packet.h
1124 list(APPEND VNET_API_FILES devices/af_packet/af_packet.api)
1126 ##############################################################################
1127 # Driver feature graph arc support
1128 ##############################################################################
1130 list(APPEND VNET_SOURCES
1132 feature/feature_api.c
1133 feature/registration.c
1136 list(APPEND VNET_HEADERS
1140 list(APPEND VNET_API_FILES feature/feature.api)
1142 ##############################################################################
1143 # Unix kernel related
1144 ##############################################################################
1146 # FIXME: unix/hgshm.c
1148 list(APPEND VNET_SOURCES
1153 list(APPEND VNET_HEADERS
1157 ##############################################################################
1159 ##############################################################################
1161 list(APPEND VNET_SOURCES
1173 fib/fib_entry_src_adj.c
1174 fib/fib_entry_src_api.c
1175 fib/fib_entry_src_drop.c
1176 fib/fib_entry_src_interface.c
1177 fib/fib_entry_src_interpose.c
1178 fib/fib_entry_src_lisp.c
1179 fib/fib_entry_src_mpls.c
1180 fib/fib_entry_src_simple.c
1181 fib/fib_entry_src_rr.c
1182 fib/fib_entry_cover.c
1183 fib/fib_entry_delegate.c
1184 fib/fib_entry_track.c
1190 fib/fib_attached_export.c
1195 list(APPEND VNET_HEADERS
1205 fib/fib_entry_delegate.h
1209 list(APPEND VNET_API_FILES fib/fib_types.api)
1211 ##############################################################################
1213 ##############################################################################
1215 list(APPEND VNET_SOURCES
1219 adj/adj_midchain_delegate.c
1229 list(APPEND VNET_MULTIARCH_SOURCES
1235 list(APPEND VNET_HEADERS
1245 ##############################################################################
1246 # Data-Plane Objects
1247 ##############################################################################
1249 list(APPEND VNET_SOURCES
1257 dpo/load_balance_map.c
1261 dpo/interface_rx_dpo.c
1262 dpo/interface_tx_dpo.c
1263 dpo/mpls_disposition.c
1264 dpo/mpls_label_dpo.c
1270 list(APPEND VNET_MULTIARCH_SOURCES
1272 dpo/mpls_disposition.c
1274 dpo/mpls_label_dpo.c
1275 dpo/interface_rx_dpo.c
1278 list(APPEND VNET_HEADERS
1290 ##############################################################################
1292 ##############################################################################
1294 list(APPEND VNET_SOURCES
1304 mfib/mfib_entry_cover.c
1305 mfib/mfib_entry_delegate.c
1306 mfib/mfib_entry_src.c
1307 mfib/mfib_entry_src_rr.c
1311 list(APPEND VNET_MULTIARCH_SOURCES
1315 list(APPEND VNET_HEADERS
1321 list(APPEND VNET_API_FILES mfib/mfib_types.api)
1323 ##############################################################################
1325 ##############################################################################
1327 list(APPEND VNET_SOURCES
1334 list(APPEND VNET_HEADERS
1338 ##############################################################################
1340 ##############################################################################
1342 list(APPEND VNET_SOURCES
1345 qos/qos_egress_map.c
1347 qos/qos_record_node.c
1349 qos/qos_store_node.c
1354 list(APPEND VNET_MULTIARCH_SOURCES
1355 qos/qos_record_node.c
1359 list(APPEND VNET_API_FILES qos/qos.api)
1361 ##############################################################################
1363 ##############################################################################
1365 list(APPEND VNET_SOURCES
1366 bier/bier_bit_string.c
1369 bier/bier_fmask_db.c
1378 bier/bier_imp_node.c
1380 bier/bier_disp_entry.c
1381 bier/bier_disp_lookup_node.c
1382 bier/bier_disp_dispatch_node.c
1383 bier/bier_disp_table.c
1384 bier/bier_bift_table.c
1387 list(APPEND VNET_MULTIARCH_SOURCES
1388 bier/bier_disp_dispatch_node.c
1389 bier/bier_disp_lookup_node.c
1390 bier/bier_imp_node.c
1393 list(APPEND VNET_HEADERS
1400 list(APPEND VNET_API_FILES bier/bier.api)
1402 ##############################################################################
1404 ##############################################################################
1406 list (APPEND VNET_SOURCES
1412 list(APPEND VNET_HEADERS
1417 list(APPEND VNET_API_FILES syslog/syslog.api)
1419 ##############################################################################
1420 # Tunnel Endpoint Information Base
1421 ##############################################################################
1423 list (APPEND VNET_SOURCES
1429 list(APPEND VNET_HEADERS
1433 list(APPEND VNET_API_FILES teib/teib.api)
1435 ##############################################################################
1437 ##############################################################################
1439 list (APPEND VNET_SOURCES
1445 list(APPEND VNET_HEADERS
1449 list(APPEND VNET_API_FILES arp/arp.api)
1451 list (APPEND VNET_SOURCES
1455 ip6-nd/ip6_nd_proxy.c
1461 list(APPEND VNET_HEADERS
1465 list(APPEND VNET_API_FILES
1470 ##############################################################################
1472 ##############################################################################
1474 add_vpp_library(vnet
1475 SOURCES ${VNET_SOURCES}
1476 MULTIARCH_SOURCES ${VNET_MULTIARCH_SOURCES}
1477 INSTALL_HEADERS ${VNET_HEADERS}
1478 API_FILES ${VNET_API_FILES}
1479 LINK_LIBRARIES vppinfra svm vlib ${OPENSSL_LIBRARIES}
1480 DEPENDS vpp_version_h api_headers
1483 ##############################################################################
1484 # vpp api test client library
1485 ##############################################################################
1487 add_vpp_library (vatclient
1488 SOURCES ip/ip_types_api.c
1492 ##############################################################################