1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors 3*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file. 5*bb4ee6a4SAndroid Build Coastguard Worker 6*bb4ee6a4SAndroid Build Coastguard Worker# Regenerate net_sys bindgen bindings. 7*bb4ee6a4SAndroid Build Coastguard Worker 8*bb4ee6a4SAndroid Build Coastguard Workerset -euo pipefail 9*bb4ee6a4SAndroid Build Coastguard Workercd "$(dirname "${BASH_SOURCE[0]}")/.." 10*bb4ee6a4SAndroid Build Coastguard Worker 11*bb4ee6a4SAndroid Build Coastguard Workersource tools/impl/bindgen-common.sh 12*bb4ee6a4SAndroid Build Coastguard Worker 13*bb4ee6a4SAndroid Build Coastguard Worker# Replace definition of struct sockaddr with an import of libc::sockaddr. 14*bb4ee6a4SAndroid Build Coastguard Workerreplace_sockaddr_libc() { 15*bb4ee6a4SAndroid Build Coastguard Worker # Match the following structure definition across multiple lines: 16*bb4ee6a4SAndroid Build Coastguard Worker # 17*bb4ee6a4SAndroid Build Coastguard Worker # #[repr(C)] 18*bb4ee6a4SAndroid Build Coastguard Worker # #[derive(Debug, Default, Copy, Clone)] 19*bb4ee6a4SAndroid Build Coastguard Worker # pub struct sockaddr { 20*bb4ee6a4SAndroid Build Coastguard Worker # pub sa_family: sa_family_t, 21*bb4ee6a4SAndroid Build Coastguard Worker # pub sa_data: [::std::os::raw::c_char; 14usize], 22*bb4ee6a4SAndroid Build Coastguard Worker # } 23*bb4ee6a4SAndroid Build Coastguard Worker sed -E \ 24*bb4ee6a4SAndroid Build Coastguard Worker -e '1h;2,$H;$!d;g' \ 25*bb4ee6a4SAndroid Build Coastguard Worker -e 's/#\[repr\(C\)\]\n#\[derive\([^)]+\)\]\npub struct sockaddr \{\n( pub [^\n]+\n)+\}/\nuse libc::sockaddr;\n/' 26*bb4ee6a4SAndroid Build Coastguard Worker} 27*bb4ee6a4SAndroid Build Coastguard Worker 28*bb4ee6a4SAndroid Build Coastguard Worker# Remove custom sa_family_t type in favor of libc::sa_family_t. 29*bb4ee6a4SAndroid Build Coastguard Workerremove_sa_family_t() { 30*bb4ee6a4SAndroid Build Coastguard Worker grep -v "pub type sa_family_t = " 31*bb4ee6a4SAndroid Build Coastguard Worker} 32*bb4ee6a4SAndroid Build Coastguard Worker 33*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 34*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='ifreq' \ 35*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='net_device_flags' \ 36*bb4ee6a4SAndroid Build Coastguard Worker --bitfield-enum='net_device_flags' \ 37*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/if.h" \ 38*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 39*bb4ee6a4SAndroid Build Coastguard Worker | replace_sockaddr_libc \ 40*bb4ee6a4SAndroid Build Coastguard Worker | remove_sa_family_t \ 41*bb4ee6a4SAndroid Build Coastguard Worker | rustfmt \ 42*bb4ee6a4SAndroid Build Coastguard Worker > net_sys/src/iff.rs 43*bb4ee6a4SAndroid Build Coastguard Worker 44*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 45*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='sock_fprog' \ 46*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='TUN_.*' \ 47*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='IFF_NO_PI' \ 48*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='IFF_MULTI_QUEUE' \ 49*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='IFF_TAP' \ 50*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='IFF_VNET_HDR' \ 51*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX}/include/uapi/linux/if_tun.h" \ 52*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 53*bb4ee6a4SAndroid Build Coastguard Worker > net_sys/src/if_tun.rs 54*bb4ee6a4SAndroid Build Coastguard Worker 55*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 56*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='SIOC.*' \ 57*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX}/include/uapi/linux/sockios.h" \ 58*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 59*bb4ee6a4SAndroid Build Coastguard Worker > net_sys/src/sockios.rs 60