//
// Copyright (C) 2020 The Android Open Source Project
//
// 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.
//

//
// struct definitions shared with JNI
//
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_library_headers {
    name: "bpf_connectivity_headers",
    vendor_available: false,
    host_supported: false,
    header_libs: ["bpf_headers"],
    export_header_lib_headers: ["bpf_headers"],
    export_include_dirs: ["."],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    sdk_version: "30",
    min_sdk_version: "30",
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
        ],
    visibility: [
        // TODO: remove it when NetworkStatsService is moved into the mainline module and no more
        // calls to JNI in libservices.core.
        "//frameworks/base/services/core/jni",
        "//packages/modules/Connectivity/netd",
        "//packages/modules/Connectivity/service",
        "//packages/modules/Connectivity/service/native/libs/libclat",
        "//packages/modules/Connectivity/Tethering",
        "//packages/modules/Connectivity/service/native",
        "//packages/modules/Connectivity/service-t/native/libs/libnetworkstats",
        "//packages/modules/Connectivity/tests/unit/jni",
        "//system/netd/server",
        "//system/netd/tests",
    ],
}

//
// bpf kernel programs
//
bpf {
    name: "dscp_policy.o",
    srcs: ["dscp_policy.c"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    sub_dir: "net_shared",
}

bpf {
    name: "offload.o",
    srcs: ["offload.c"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
}

bpf {
    name: "test.o",
    srcs: ["test.c"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
}

bpf {
    name: "clatd.o_mainline",
    srcs: ["clatd.c"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    include_dirs: [
        "frameworks/libs/net/common/netd/libnetdutils/include",
    ],
    sub_dir: "net_shared",
}

bpf {
    name: "netd.o_mainline",
    srcs: ["netd.c"],
    cflags: [
        "-Wall",
        "-Werror",
    ],
    include_dirs: [
        "frameworks/libs/net/common/netd/libnetdutils/include",
    ],
    sub_dir: "net_shared",
}
