Files
lcpng/CMakeLists.txt
Pim van Pelt f7e1bb951d Sync IPv4 and IPv6 addresses from VPP to LCP
There are three ways in which IP addresses will want to be copied
from VPP into the companion Linux devices:

1) set interface ip address ... adds an IPv4 or IPv6 address
  - this is handled by lcp_itf_ip[46]_add_del_interface_addr() which
    is a callback installed in lcp_itf_pair_init()
2) set interface ip address del ... removes them
  - also handled by lcp_itf_ip[46]_add_del_interface_addr() but
    curiously there is no upstream vnet_netlink_del_ip[46]_addr() so
    I wrote them inline here - I will try to get them upstreamed, as
    they appear to be obvious companions in vnet/device/netlink.h
3) Upon LIP creation, it could be that there are L3 addresses already
   on the VPP interface. If so, set them with lcp_itf_set_interface_addr()

This means that now, at any time a new LIP is created, its state from
VPP is fully copied over (MTU, Link state, IPv4/IPv6 addresses)!

At runtime, new addresses can be set/removed as well.
2021-08-13 16:50:32 +02:00

63 lines
1.4 KiB
CMake

# Copyright (c) 2020 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.
vpp_find_path(LIBNL3_INCLUDE_DIR NAMES libnl3/netlink/route/link/vlan.h)
if (NOT LIBNL3_INCLUDE_DIR)
message(WARNING "-- libnl3 headers not found - lcpng plugin disabled")
return()
endif()
vpp_plugin_find_library(lcpng LIBNL3_LIB libnl-3.so)
vpp_plugin_find_library(lcpng LIBNL3_ROUTE_LIB libnl-route-3.so.200)
include_directories(${LIBNL3_INCLUDE_DIR}/libnl3)
include_directories(${LIBMNL_INCLUDE_DIR})
add_vpp_library(lcpng
SOURCES
lcpng_interface.c
lcpng_adj.c
lcpng_if_sync.c
lcpng.c
LINK_LIBRARIES
${LIBNL3_LIB}
${LIBNL3_ROUTE_LIB}
INSTALL_HEADERS
lcpng_interface.h
lcpng.h
)
add_vpp_plugin(lcpng_if
SOURCES
lcpng_if_api.c
lcpng_if_cli.c
lcpng_if_node.c
API_FILES
lcpng_if.api
LINK_LIBRARIES
lcpng
)
add_vpp_plugin(lcpng_unittest
SOURCES
test/lcpng_unittest.c
LINK_LIBRARIES
lcpng
)