Alright, let's see. The user is having an issue building QEMU from source on Ubuntu 16.04. They provided the error messages which are all related to struct ibv_port_attr not having a member named 'link_layer' and some undeclared identifiers like IBV_LINK_LAYER_INFINIBAND and IBV_LINK_LAYER_ETHERNET. First, I need to understand what's causing these errors. The error occurs in migration/rdma.c during the make process. Looking at the code snippets, it seems the functions qemu_rdma_dump_id and qemu_rdma_broken_ipv6_kernel are using struct ibv_port_attr and relying on the link_layer member and some IBV_*_LINK_LAYER constants. The user mentioned they've installed libibverbs-dev but suspect their version might be outdated. They also referenced a kernel patch (patchwork.kernel.org/patch/992952) which suggests that there was an issue with these link layer definitions in the past. I recall that struct ibv_port_attr's link_layer is part of the InfiniBand Verbs API. Maybe their version of libibverbs doesn't have this member, or perhaps the constants IBV_LINK_LAYER_* aren't defined in their installed headers. Looking up, I know that older versions of libibverbs might not include these definitions. For example, if they're using a version before certain updates, link_layer might not be present. The build error is happening during compilation, so it's related to the header files. The functions are trying to access struct ibv_port_attr.link_layer and use IBV_LINK_LAYER_ETHERNET or INFINIBAND, which aren't declared. Possible solutions could involve updating libibverbs to a newer version where these definitions exist. Alternatively, maybe QEMU requires a minimum version of libibverbs that includes these changes. Since the user installed libibverbs-dev as per QEMU's wiki, but it's possible their distribution's package doesn't include the latest versions. So, they might need to build libibverbs from source or find a PPA with newer packages. Alternatively, maybe there's a way to adjust QEMU's code to work around this issue if link_layer isn't available in their version of ibv_port_attr. But since this is an error during compilation, the main fix would be ensuring that libibverbs-dev is up-to-date. network