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
184 l2/l2_in_out_feat_arc.c
192 list(APPEND VNET_MULTIARCH_SOURCES
198 l2/l2_in_out_feat_arc.c
199 l2/l2_input_classify.c
201 l2/l2_output_classify.c
211 list(APPEND VNET_HEADERS
228 list(APPEND VNET_API_FILES l2/l2.api)
230 ##############################################################################
231 # Layer 2 protocol: SRP
232 ##############################################################################
233 list(APPEND VNET_SOURCES
240 list(APPEND VNET_HEADERS
245 ##############################################################################
246 # Layer 2 protocol: PPP
247 ##############################################################################
248 list(APPEND VNET_SOURCES
254 list(APPEND VNET_HEADERS
260 ##############################################################################
261 # Layer 2 protocol: HDLC
262 ##############################################################################
263 list(APPEND VNET_SOURCES
269 list(APPEND VNET_HEADERS
275 ##############################################################################
276 # Layer 2 protocol: LLC
277 ##############################################################################
278 list(APPEND VNET_SOURCES
284 list(APPEND VNET_HEADERS
288 ##############################################################################
289 # Layer 2 protocol: SNAP
290 ##############################################################################
291 list(APPEND VNET_SOURCES
297 list(APPEND VNET_HEADERS
301 ##############################################################################
303 ##############################################################################
304 list(APPEND VNET_SOURCES
311 list(APPEND VNET_MULTIARCH_SOURCES
315 list(APPEND VNET_HEADERS
318 vxlan/vxlan_error.def
321 list(APPEND VNET_MULTIARCH_SOURCES vxlan/decap.c)
323 list(APPEND VNET_API_FILES vxlan/vxlan.api)
325 ##############################################################################
327 ##############################################################################
328 list(APPEND VNET_SOURCES
335 list(APPEND VNET_HEADERS
339 list(APPEND VNET_MULTIARCH_SOURCES bonding/node.c bonding/device.c)
340 list(APPEND VNET_API_FILES bonding/bond.api)
342 ##############################################################################
343 # Layer 2/3 "classify"
344 ##############################################################################
345 list(APPEND VNET_SOURCES
346 classify/vnet_classify.c
347 classify/trace_classify.h
348 classify/ip_classify.c
349 classify/in_out_acl.c
350 classify/policer_classify.c
351 classify/flow_classify.c
352 classify/flow_classify_node.c
353 classify/vnet_classify.h
354 classify/classify_api.c
357 list(APPEND VNET_MULTIARCH_SOURCES
358 classify/ip_classify.c
359 classify/flow_classify_node.c
362 list(APPEND VNET_HEADERS
363 classify/vnet_classify.h
364 classify/trace_classify.h
365 classify/in_out_acl.h
366 classify/policer_classify.h
367 classify/flow_classify.h
370 list(APPEND VNET_API_FILES classify/classify.api)
372 ##############################################################################
373 # Layer 3 protocols go here
374 ##############################################################################
376 ##############################################################################
377 # Layer 3 protocol: IP v4/v6
378 ##############################################################################
379 list(APPEND VNET_SOURCES
393 ip/ip4_source_and_port_range_check.c
394 ip/reass/ip4_full_reass.c
395 ip/reass/ip4_sv_reass.c
405 ip/reass/ip6_full_reass.c
406 ip/reass/ip6_sv_reass.c
423 list(APPEND VNET_MULTIARCH_SOURCES
425 ip/reass/ip4_full_reass.c
427 ip/reass/ip6_full_reass.c
428 ip/reass/ip4_sv_reass.c
430 ip/reass/ip6_full_reass.c
431 ip/reass/ip6_sv_reass.c
438 list(APPEND VNET_HEADERS
452 ip/ip6_hop_by_hop_packet.h
458 ip/ip_source_and_port_range_check.h
467 list(APPEND VNET_API_FILES
472 list(APPEND VNET_MULTIARCH_SOURCES
478 ##############################################################################
480 ##############################################################################
481 list(APPEND VNET_SOURCES
482 ip-neighbor/ip_neighbor.c
483 ip-neighbor/ip_neighbor_api.c
484 ip-neighbor/ip_neighbor_dp.c
485 ip-neighbor/ip_neighbor_types.c
486 ip-neighbor/ip_neighbor_watch.c
487 ip-neighbor/ip4_neighbor.c
488 ip-neighbor/ip6_neighbor.c
491 list(APPEND VNET_HEADERS
492 ip-neighbor/ip_neighbor.h
493 ip-neighbor/ip_neighbor_types.h
496 list(APPEND VNET_API_FILES
497 ip-neighbor/ip_neighbor.api
500 ##############################################################################
501 # Bidirectional Forwarding Detection
502 ##############################################################################
504 list(APPEND VNET_HEADERS
511 list(APPEND VNET_SOURCES
520 list(APPEND VNET_API_FILES bfd/bfd.api)
522 ##############################################################################
524 ##############################################################################
526 list(APPEND VNET_SOURCES
534 list(APPEND VNET_HEADERS
538 list(APPEND VNET_MULTIARCH_SOURCES crypto/node.c)
540 list(APPEND VNET_API_FILES crypto/crypto.api)
542 ##############################################################################
543 # Layer 3 protocol: IPSec
544 ##############################################################################
545 list(APPEND VNET_SOURCES
549 ipsec/ipsec_handoff.c
555 ipsec/ipsec_spd_policy.c
564 ipsec/ipsec_types_api.c
567 list(APPEND VNET_MULTIARCH_SOURCES
572 ipsec/ipsec_handoff.c
578 list(APPEND VNET_API_FILES ipsec/ipsec_types.api)
579 list(APPEND VNET_API_FILES ipsec/ipsec.api)
581 list(APPEND VNET_SOURCES
585 list(APPEND VNET_HEADERS
588 ipsec/ipsec_spd_policy.h
591 ipsec/ipsec_types_api.h
597 ##############################################################################
598 # Layer 3 protocol: osi
599 ##############################################################################
600 list(APPEND VNET_SOURCES
606 list(APPEND VNET_HEADERS
610 ##############################################################################
611 # Layer 4 protocol: tcp
612 ##############################################################################
613 list(APPEND VNET_SOURCES
617 tcp/tcp_syn_filter4.c
629 list(APPEND VNET_MULTIARCH_SOURCES
632 tcp/tcp_syn_filter4.c
635 list(APPEND VNET_HEADERS
648 list(APPEND VNET_API_FILES tcp/tcp.api)
650 ##############################################################################
651 # Layer 4 protocol: udp
652 ##############################################################################
653 list(APPEND VNET_SOURCES
665 list(APPEND VNET_MULTIARCH_SOURCES
670 list(APPEND VNET_HEADERS
676 list(APPEND VNET_API_FILES udp/udp.api)
678 ##############################################################################
679 # Tunnel protocol: gre
680 ##############################################################################
681 list(APPEND VNET_SOURCES
689 list(APPEND VNET_MULTIARCH_SOURCES
694 list(APPEND VNET_HEADERS
700 list(APPEND VNET_API_FILES gre/gre.api)
702 ##############################################################################
703 # Tunnel protocol: ipip
704 ##############################################################################
705 list(APPEND VNET_SOURCES
713 list(APPEND VNET_MULTIARCH_SOURCES
717 list(APPEND VNET_HEADERS
721 list(APPEND VNET_API_FILES
725 ##############################################################################
727 ##############################################################################
728 list(APPEND VNET_SOURCES
730 tunnel/tunnel_types_api.c
733 list(APPEND VNET_API_FILES
734 tunnel/tunnel_types.api
737 list(APPEND VNET_HEADERS
742 ##############################################################################
743 # Tunnel protocol: gre+mpls
744 ##############################################################################
745 list(APPEND VNET_SOURCES
757 list(APPEND VNET_MULTIARCH_SOURCES
764 list(APPEND VNET_HEADERS
772 list(APPEND VNET_API_FILES mpls/mpls.api)
774 ##############################################################################
775 # Tunnel protocol: vxlan-gbp
776 ##############################################################################
777 list(APPEND VNET_SOURCES
780 vxlan-gbp/vxlan_gbp_api.c
781 vxlan-gbp/vxlan_gbp.c
782 vxlan-gbp/vxlan_gbp_packet.c
785 list (APPEND VNET_MULTIARCH_SOURCES
790 list(APPEND VNET_HEADERS
791 vxlan-gbp/vxlan_gbp.h
792 vxlan-gbp/vxlan_gbp_packet.h
793 vxlan-gbp/vxlan_gbp_error.def
796 list(APPEND VNET_API_FILES vxlan-gbp/vxlan_gbp.api)
798 ##############################################################################
799 # Tunnel protocol: vxlan-gpe
800 ##############################################################################
802 list(APPEND VNET_SOURCES
803 vxlan-gpe/vxlan_gpe.c
806 vxlan-gpe/vxlan_gpe_api.c
809 list (APPEND VNET_MULTIARCH_SOURCES
813 list(APPEND VNET_HEADERS
814 vxlan-gpe/vxlan_gpe.h
815 vxlan-gpe/vxlan_gpe_packet.h
816 vxlan-gpe/vxlan_gpe_error.def
819 list(APPEND VNET_API_FILES vxlan-gpe/vxlan_gpe.api)
821 ##############################################################################
822 # ipv6 segment routing
823 ##############################################################################
825 list(APPEND VNET_SOURCES
828 srv6/sr_policy_rewrite.c
833 list(APPEND VNET_HEADERS
838 list(APPEND VNET_API_FILES
843 ##############################################################################
844 # mpls segment routing
845 ##############################################################################
847 list(APPEND VNET_SOURCES
848 srmpls/sr_mpls_policy.c
849 srmpls/sr_mpls_steering.c
853 list(APPEND VNET_HEADERS
857 list(APPEND VNET_API_FILES
862 ##############################################################################
863 # IPFIX / netflow v10
864 ##############################################################################
865 list(APPEND VNET_SOURCES
866 ipfix-export/flow_report.c
867 ipfix-export/flow_api.c
870 list(APPEND VNET_HEADERS
871 ipfix-export/flow_report.h
872 ipfix-export/ipfix_info_elements.h
873 ipfix-export/ipfix_packet.h
876 list(APPEND VNET_API_FILES ipfix-export/ipfix_export.api)
878 ##############################################################################
880 ##############################################################################
881 list(APPEND VNET_SOURCES
888 list(APPEND VNET_HEADERS
891 gso/hdr_offset_parser.h
895 list(APPEND VNET_API_FILES
899 ##############################################################################
900 # IPFIX classify code
901 ##############################################################################
903 list(APPEND VNET_SOURCES
904 ipfix-export/flow_report_classify.c
907 list(APPEND VNET_HEADERS
908 ipfix-export/flow_report_classify.h
911 ##############################################################################
913 ##############################################################################
915 list(APPEND VNET_SOURCES
916 lawful-intercept/lawful_intercept.c
917 lawful-intercept/node.c
920 list(APPEND VNET_MULTIARCH_SOURCES
921 lawful-intercept/node.c
924 list(APPEND VNET_HEADERS
925 lawful-intercept/lawful_intercept.h
928 ##############################################################################
929 # SPAN (port mirroring)
930 ##############################################################################
932 list(APPEND VNET_SOURCES
938 list(APPEND VNET_MULTIARCH_SOURCES
942 list(APPEND VNET_HEADERS
946 list(APPEND VNET_API_FILES span/span.api)
948 ##############################################################################
950 ##############################################################################
952 list(APPEND VNET_SOURCES
962 list(APPEND VNET_HEADERS
967 list(APPEND VNET_API_FILES pg/pg.api)
969 ##############################################################################
971 ##############################################################################
973 list(APPEND VNET_SOURCES
975 devices/virtio/device.c
976 devices/virtio/format.c
977 devices/virtio/node.c
979 devices/virtio/vhost_user.c
980 devices/virtio/vhost_user_input.c
981 devices/virtio/vhost_user_output.c
982 devices/virtio/vhost_user_api.c
983 devices/virtio/virtio.c
984 devices/virtio/virtio_api.c
985 devices/virtio/virtio_pci_legacy.c
986 devices/virtio/virtio_pci_modern.c
987 devices/virtio/virtio_types_api.c
990 list(APPEND VNET_HEADERS
992 devices/virtio/virtio.h
993 devices/virtio/virtio_buffering.h
994 devices/virtio/virtio_std.h
995 devices/virtio/virtio_pci_legacy.h
996 devices/virtio/virtio_pci_modern.h
997 devices/virtio/vhost_std.h
998 devices/virtio/vhost_user.h
999 devices/virtio/virtio_types_api.h
1002 list(APPEND VNET_MULTIARCH_SOURCES
1003 devices/virtio/vhost_user_input.c
1004 devices/virtio/vhost_user_output.c
1005 devices/virtio/node.c
1006 devices/af_packet/node.c
1007 devices/virtio/device.c
1010 list(APPEND VNET_API_FILES
1011 devices/virtio/vhost_user.api
1012 devices/virtio/virtio.api
1013 devices/virtio/virtio_types.api
1016 ##############################################################################
1017 # tap interface (with virtio backend)
1018 ##############################################################################
1020 list(APPEND VNET_SOURCES
1023 devices/tap/tapv2_api.c
1026 list(APPEND VNET_HEADERS
1030 list(APPEND VNET_API_FILES
1031 devices/tap/tapv2.api
1034 ##############################################################################
1035 # tap interface (with virtio backend)
1036 ##############################################################################
1038 list(APPEND VNET_SOURCES
1039 devices/pipe/pipe_api.c
1043 list(APPEND VNET_HEADERS
1047 list(APPEND VNET_API_FILES devices/pipe/pipe.api)
1049 ##############################################################################
1050 # session managmeent
1051 ##############################################################################
1053 list(APPEND VNET_SOURCES
1055 session/session_debug.c
1056 session/session_table.c
1057 session/session_rules_table.c
1058 session/session_lookup.c
1059 session/session_node.c
1061 session/application.c
1062 session/application_worker.c
1063 session/session_cli.c
1064 session/application_interface.c
1065 session/application_local.c
1066 session/application_namespace.c
1067 session/segment_manager.c
1068 session/session_api.c
1071 list(APPEND VNET_HEADERS
1073 session/session_table.h
1074 session/session_rules_table.h
1075 session/session_types.h
1076 session/session_lookup.h
1077 session/application.h
1079 session/transport_types.h
1080 session/application_interface.h
1081 session/application_local.h
1082 session/application_namespace.h
1083 session/session_debug.h
1084 session/segment_manager.h
1085 session/mma_template.h
1086 session/mma_template.c
1091 list(APPEND VNET_API_FILES session/session.api)
1093 ##############################################################################
1095 ##############################################################################
1097 list(APPEND VNET_SOURCES
1101 list(APPEND VNET_HEADERS
1106 ##############################################################################
1107 # Linux packet interface
1108 ##############################################################################
1110 list(APPEND VNET_SOURCES
1111 devices/af_packet/af_packet.c
1112 devices/af_packet/device.c
1113 devices/af_packet/node.c
1114 devices/af_packet/cli.c
1115 devices/af_packet/af_packet_api.c
1118 list(APPEND VNET_MULTIARCH_SOURCES
1119 devices/af_packet/device.c
1122 list(APPEND VNET_HEADERS
1123 devices/af_packet/af_packet.h
1126 list(APPEND VNET_API_FILES devices/af_packet/af_packet.api)
1128 ##############################################################################
1129 # Driver feature graph arc support
1130 ##############################################################################
1132 list(APPEND VNET_SOURCES
1134 feature/feature_api.c
1135 feature/registration.c
1138 list(APPEND VNET_HEADERS
1142 list(APPEND VNET_API_FILES feature/feature.api)
1144 ##############################################################################
1145 # Unix kernel related
1146 ##############################################################################
1148 # FIXME: unix/hgshm.c
1150 list(APPEND VNET_SOURCES
1155 list(APPEND VNET_HEADERS
1159 ##############################################################################
1161 ##############################################################################
1163 list(APPEND VNET_SOURCES
1175 fib/fib_entry_src_adj.c
1176 fib/fib_entry_src_api.c
1177 fib/fib_entry_src_drop.c
1178 fib/fib_entry_src_interface.c
1179 fib/fib_entry_src_interpose.c
1180 fib/fib_entry_src_lisp.c
1181 fib/fib_entry_src_mpls.c
1182 fib/fib_entry_src_simple.c
1183 fib/fib_entry_src_rr.c
1184 fib/fib_entry_cover.c
1185 fib/fib_entry_delegate.c
1186 fib/fib_entry_track.c
1192 fib/fib_attached_export.c
1197 list(APPEND VNET_HEADERS
1207 fib/fib_entry_delegate.h
1211 list(APPEND VNET_API_FILES fib/fib_types.api)
1213 ##############################################################################
1215 ##############################################################################
1217 list(APPEND VNET_SOURCES
1221 adj/adj_midchain_delegate.c
1231 list(APPEND VNET_MULTIARCH_SOURCES
1237 list(APPEND VNET_HEADERS
1247 ##############################################################################
1248 # Data-Plane Objects
1249 ##############################################################################
1251 list(APPEND VNET_SOURCES
1259 dpo/load_balance_map.c
1263 dpo/interface_rx_dpo.c
1264 dpo/interface_tx_dpo.c
1265 dpo/mpls_disposition.c
1266 dpo/mpls_label_dpo.c
1272 list(APPEND VNET_MULTIARCH_SOURCES
1274 dpo/mpls_disposition.c
1276 dpo/mpls_label_dpo.c
1277 dpo/interface_rx_dpo.c
1280 list(APPEND VNET_HEADERS
1292 ##############################################################################
1294 ##############################################################################
1296 list(APPEND VNET_SOURCES
1306 mfib/mfib_entry_cover.c
1307 mfib/mfib_entry_delegate.c
1308 mfib/mfib_entry_src.c
1309 mfib/mfib_entry_src_rr.c
1313 list(APPEND VNET_MULTIARCH_SOURCES
1317 list(APPEND VNET_HEADERS
1323 list(APPEND VNET_API_FILES mfib/mfib_types.api)
1325 ##############################################################################
1327 ##############################################################################
1329 list(APPEND VNET_SOURCES
1336 list(APPEND VNET_HEADERS
1340 ##############################################################################
1342 ##############################################################################
1344 list(APPEND VNET_SOURCES
1347 qos/qos_egress_map.c
1349 qos/qos_record_node.c
1351 qos/qos_store_node.c
1356 list(APPEND VNET_MULTIARCH_SOURCES
1357 qos/qos_record_node.c
1361 list(APPEND VNET_API_FILES qos/qos.api)
1363 ##############################################################################
1365 ##############################################################################
1367 list(APPEND VNET_SOURCES
1368 bier/bier_bit_string.c
1371 bier/bier_fmask_db.c
1380 bier/bier_imp_node.c
1382 bier/bier_disp_entry.c
1383 bier/bier_disp_lookup_node.c
1384 bier/bier_disp_dispatch_node.c
1385 bier/bier_disp_table.c
1386 bier/bier_bift_table.c
1389 list(APPEND VNET_MULTIARCH_SOURCES
1390 bier/bier_disp_dispatch_node.c
1391 bier/bier_disp_lookup_node.c
1392 bier/bier_imp_node.c
1395 list(APPEND VNET_HEADERS
1402 list(APPEND VNET_API_FILES bier/bier.api)
1404 ##############################################################################
1406 ##############################################################################
1408 list (APPEND VNET_SOURCES
1414 list(APPEND VNET_HEADERS
1419 list(APPEND VNET_API_FILES syslog/syslog.api)
1421 ##############################################################################
1422 # Tunnel Endpoint Information Base
1423 ##############################################################################
1425 list (APPEND VNET_SOURCES
1431 list(APPEND VNET_HEADERS
1435 list(APPEND VNET_API_FILES teib/teib.api)
1437 ##############################################################################
1439 ##############################################################################
1441 list (APPEND VNET_SOURCES
1447 list(APPEND VNET_HEADERS
1451 list(APPEND VNET_API_FILES arp/arp.api)
1453 list (APPEND VNET_SOURCES
1457 ip6-nd/ip6_nd_proxy.c
1463 list(APPEND VNET_HEADERS
1467 list(APPEND VNET_API_FILES
1472 ##############################################################################
1474 ##############################################################################
1476 add_vpp_library(vnet
1477 SOURCES ${VNET_SOURCES}
1478 MULTIARCH_SOURCES ${VNET_MULTIARCH_SOURCES}
1479 INSTALL_HEADERS ${VNET_HEADERS}
1480 API_FILES ${VNET_API_FILES}
1481 LINK_LIBRARIES vppinfra svm vlib ${OPENSSL_LIBRARIES}
1482 DEPENDS vpp_version_h api_headers
1485 ##############################################################################
1486 # vpp api test client library
1487 ##############################################################################
1489 add_vpp_library (vatclient
1490 SOURCES ip/ip_types_api.c
1494 ##############################################################################