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_buffering.h
993 devices/virtio/virtio_std.h
994 devices/virtio/virtio_pci_legacy.h
995 devices/virtio/virtio_pci_modern.h
996 devices/virtio/vhost_std.h
997 devices/virtio/vhost_user.h
998 devices/virtio/virtio_types_api.h
1001 list(APPEND VNET_MULTIARCH_SOURCES
1002 devices/virtio/vhost_user_input.c
1003 devices/virtio/vhost_user_output.c
1004 devices/virtio/node.c
1005 devices/af_packet/node.c
1006 devices/virtio/device.c
1009 list(APPEND VNET_API_FILES
1010 devices/virtio/vhost_user.api
1011 devices/virtio/virtio.api
1012 devices/virtio/virtio_types.api
1015 ##############################################################################
1016 # tap interface (with virtio backend)
1017 ##############################################################################
1019 list(APPEND VNET_SOURCES
1022 devices/tap/tapv2_api.c
1025 list(APPEND VNET_HEADERS
1029 list(APPEND VNET_API_FILES
1030 devices/tap/tapv2.api
1033 ##############################################################################
1034 # tap interface (with virtio backend)
1035 ##############################################################################
1037 list(APPEND VNET_SOURCES
1038 devices/pipe/pipe_api.c
1042 list(APPEND VNET_HEADERS
1046 list(APPEND VNET_API_FILES devices/pipe/pipe.api)
1048 ##############################################################################
1049 # session managmeent
1050 ##############################################################################
1052 list(APPEND VNET_SOURCES
1054 session/session_debug.c
1055 session/session_table.c
1056 session/session_rules_table.c
1057 session/session_lookup.c
1058 session/session_node.c
1060 session/application.c
1061 session/application_worker.c
1062 session/session_cli.c
1063 session/application_interface.c
1064 session/application_local.c
1065 session/application_namespace.c
1066 session/segment_manager.c
1067 session/session_api.c
1070 list(APPEND VNET_HEADERS
1072 session/session_table.h
1073 session/session_rules_table.h
1074 session/session_types.h
1075 session/session_lookup.h
1076 session/application.h
1078 session/transport_types.h
1079 session/application_interface.h
1080 session/application_local.h
1081 session/application_namespace.h
1082 session/session_debug.h
1083 session/segment_manager.h
1084 session/mma_template.h
1085 session/mma_template.c
1090 list(APPEND VNET_API_FILES session/session.api)
1092 ##############################################################################
1094 ##############################################################################
1096 list(APPEND VNET_SOURCES
1100 list(APPEND VNET_HEADERS
1105 ##############################################################################
1106 # Linux packet interface
1107 ##############################################################################
1109 list(APPEND VNET_SOURCES
1110 devices/af_packet/af_packet.c
1111 devices/af_packet/device.c
1112 devices/af_packet/node.c
1113 devices/af_packet/cli.c
1114 devices/af_packet/af_packet_api.c
1117 list(APPEND VNET_MULTIARCH_SOURCES
1118 devices/af_packet/device.c
1121 list(APPEND VNET_HEADERS
1122 devices/af_packet/af_packet.h
1125 list(APPEND VNET_API_FILES devices/af_packet/af_packet.api)
1127 ##############################################################################
1128 # Driver feature graph arc support
1129 ##############################################################################
1131 list(APPEND VNET_SOURCES
1133 feature/feature_api.c
1134 feature/registration.c
1137 list(APPEND VNET_HEADERS
1141 list(APPEND VNET_API_FILES feature/feature.api)
1143 ##############################################################################
1144 # Unix kernel related
1145 ##############################################################################
1147 # FIXME: unix/hgshm.c
1149 list(APPEND VNET_SOURCES
1154 list(APPEND VNET_HEADERS
1158 ##############################################################################
1160 ##############################################################################
1162 list(APPEND VNET_SOURCES
1174 fib/fib_entry_src_adj.c
1175 fib/fib_entry_src_api.c
1176 fib/fib_entry_src_drop.c
1177 fib/fib_entry_src_interface.c
1178 fib/fib_entry_src_interpose.c
1179 fib/fib_entry_src_lisp.c
1180 fib/fib_entry_src_mpls.c
1181 fib/fib_entry_src_simple.c
1182 fib/fib_entry_src_rr.c
1183 fib/fib_entry_cover.c
1184 fib/fib_entry_delegate.c
1185 fib/fib_entry_track.c
1191 fib/fib_attached_export.c
1196 list(APPEND VNET_HEADERS
1206 fib/fib_entry_delegate.h
1210 list(APPEND VNET_API_FILES fib/fib_types.api)
1212 ##############################################################################
1214 ##############################################################################
1216 list(APPEND VNET_SOURCES
1220 adj/adj_midchain_delegate.c
1230 list(APPEND VNET_MULTIARCH_SOURCES
1236 list(APPEND VNET_HEADERS
1246 ##############################################################################
1247 # Data-Plane Objects
1248 ##############################################################################
1250 list(APPEND VNET_SOURCES
1258 dpo/load_balance_map.c
1262 dpo/interface_rx_dpo.c
1263 dpo/interface_tx_dpo.c
1264 dpo/mpls_disposition.c
1265 dpo/mpls_label_dpo.c
1271 list(APPEND VNET_MULTIARCH_SOURCES
1273 dpo/mpls_disposition.c
1275 dpo/mpls_label_dpo.c
1276 dpo/interface_rx_dpo.c
1279 list(APPEND VNET_HEADERS
1291 ##############################################################################
1293 ##############################################################################
1295 list(APPEND VNET_SOURCES
1305 mfib/mfib_entry_cover.c
1306 mfib/mfib_entry_delegate.c
1307 mfib/mfib_entry_src.c
1308 mfib/mfib_entry_src_rr.c
1312 list(APPEND VNET_MULTIARCH_SOURCES
1316 list(APPEND VNET_HEADERS
1322 list(APPEND VNET_API_FILES mfib/mfib_types.api)
1324 ##############################################################################
1326 ##############################################################################
1328 list(APPEND VNET_SOURCES
1335 list(APPEND VNET_HEADERS
1339 ##############################################################################
1341 ##############################################################################
1343 list(APPEND VNET_SOURCES
1346 qos/qos_egress_map.c
1348 qos/qos_record_node.c
1350 qos/qos_store_node.c
1355 list(APPEND VNET_MULTIARCH_SOURCES
1356 qos/qos_record_node.c
1360 list(APPEND VNET_API_FILES qos/qos.api)
1362 ##############################################################################
1364 ##############################################################################
1366 list(APPEND VNET_SOURCES
1367 bier/bier_bit_string.c
1370 bier/bier_fmask_db.c
1379 bier/bier_imp_node.c
1381 bier/bier_disp_entry.c
1382 bier/bier_disp_lookup_node.c
1383 bier/bier_disp_dispatch_node.c
1384 bier/bier_disp_table.c
1385 bier/bier_bift_table.c
1388 list(APPEND VNET_MULTIARCH_SOURCES
1389 bier/bier_disp_dispatch_node.c
1390 bier/bier_disp_lookup_node.c
1391 bier/bier_imp_node.c
1394 list(APPEND VNET_HEADERS
1401 list(APPEND VNET_API_FILES bier/bier.api)
1403 ##############################################################################
1405 ##############################################################################
1407 list (APPEND VNET_SOURCES
1413 list(APPEND VNET_HEADERS
1418 list(APPEND VNET_API_FILES syslog/syslog.api)
1420 ##############################################################################
1421 # Tunnel Endpoint Information Base
1422 ##############################################################################
1424 list (APPEND VNET_SOURCES
1430 list(APPEND VNET_HEADERS
1434 list(APPEND VNET_API_FILES teib/teib.api)
1436 ##############################################################################
1438 ##############################################################################
1440 list (APPEND VNET_SOURCES
1446 list(APPEND VNET_HEADERS
1450 list(APPEND VNET_API_FILES arp/arp.api)
1452 list (APPEND VNET_SOURCES
1456 ip6-nd/ip6_nd_proxy.c
1462 list(APPEND VNET_HEADERS
1466 list(APPEND VNET_API_FILES
1471 ##############################################################################
1473 ##############################################################################
1475 add_vpp_library(vnet
1476 SOURCES ${VNET_SOURCES}
1477 MULTIARCH_SOURCES ${VNET_MULTIARCH_SOURCES}
1478 INSTALL_HEADERS ${VNET_HEADERS}
1479 API_FILES ${VNET_API_FILES}
1480 LINK_LIBRARIES vppinfra svm vlib ${OPENSSL_LIBRARIES}
1481 DEPENDS vpp_version_h api_headers
1484 ##############################################################################
1485 # vpp api test client library
1486 ##############################################################################
1488 add_vpp_library (vatclient
1489 SOURCES ip/ip_types_api.c
1493 ##############################################################################