Commit graph

111,898 commits

Message SHA1
Merge "Make callers of RoutingCoordinatorService pass in RouteInfoParcel" into main
Sarup Dalwani   authored and   Android (Google) Code Review   commited 2025-08-06 07:45:24 -07:00
a4f34a8836
Merge changes Icf1b55f1,I06619743,I9535eac7 into main
* changes:
  bpf: remove KVER_ prefix from k{min,max}_ver macro arguments
  bpf: remove KVER_NONE macro
  bpf: remove uid = AID_ROOT from bpf program specifications

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-06 05:53:22 -07:00
ca6ee1f454
Merge changes I718fca9e,Ieb2be6e5,Iab85fc8e into main
* changes:
  replace TetherLimitKey with S32
  replace TetherDevValue with S32
  replace TetherDevKey with S32

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-06 00:46:33 -07:00
81de39cd42
Merge "Use reported satellite suspended and roaming state" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-06 00:29:17 -07:00
2d94e180e7
Make callers of RoutingCoordinatorService pass in RouteInfoParcel
RoutingCoordinatorService's {add,remove,update}Route methods
all end up calling netd's *RouteParcel methods.

Make callers explicitly generate and pass in the parcel to the
manager class instead of having them pass in a RouteInfo and
having the service class convert the RouteInfo to a parcel.

Also remove the {add,remove,update}Route methods from
RoutingCoordinatorManager since they are unused.

This is a no-op refactor that simplifies upcoming changes.

RoutingCoordinator is not a stable interface and is not used
across the platform/mainline boundary, so there are no version
skew considerations.

Bug: 394308861
Test: atest ConnectivityCoverageTests
Flag: EXEMPT no-op refactor
Change-Id: Iedf4c9bc28c3fc8c289db421857acddc8c694990

Lorenzo Colitti   commited 2025-08-06 15:57:36 +09:00
8f8e59abf7
Merge "Include NET_CAPABILITY_NOT_VCN_MANAGED for tethering local network agent" into main
Junyu Lai   authored and   Android (Google) Code Review   commited 2025-08-05 23:07:49 -07:00
1986dec249
Merge changes I26d8e987,Icc00abb6 into main
* changes:
  Use FakeSettingsProvider callbacks to simplify CS tests.
  Don't call ContentObserver#onChange(..., UserHandle) on S.

Lorenzo Colitti   authored and   Android (Google) Code Review   commited 2025-08-05 22:59:00 -07:00
a6cb9b734c
Include NET_CAPABILITY_NOT_VCN_MANAGED for tethering local network agent
Currently, NET_CAPABILITY_NOT_VCN_MANAGED is implicited added for
NetworkRequest built by normal apps.
However, the tethering network agent doesn't have this capability,
which makes the agent being exposed to VcnManager and cannot be
seen by normal apps.

Add NET_CAPABILITY_NOT_VCN_MANAGED to tethering NetworkAgent. Include
NET_CAPABILITY_NOT_VCN_MANAGED in local network capabilities for
metrics and API utilities to ensure correct evaluation of local
network connectivity. Update unit tests to reflect the new capability.

Flag: EXEMPT bug fix
Test: atest ConnectivityCoverageTests:android.net.connectivity.com.android.server.CSSatisfiedByLocalNetworkMetricsTest \
      ConnectivityCoverageTests:android.net.connectivity.com.android.metrics.SatisfiedByLocalNetworkMetricsTest \
      --update-device
Test: manual generate request by CTS and statsd_testdrive -e 10247
Bug: 428098173
Change-Id: Ifa9ce0827abd22d887a0e8a2ab6f4d7391b2b8ed

Junyu Lai   commited 2025-08-06 11:24:33 +08:00
fbf102a88b
bpf: remove KVER_ prefix from k{min,max}_ver macro arguments
This is both shorter and allows us to use the stringified
version of these as the automatic section suffix.

Tested: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Icf1b55f1a8f79c517631e121cf4aed6513948957

Maciej Żenczykowski   commited 2025-08-05 19:18:04 -07:00
b20ada72e4
replace TetherLimitKey with S32
(mostly autogenerated, with minor tweaks to make it build)

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I718fca9ed8a4329cc53b0479159c35601e2f20d6

Maciej Żenczykowski   commited 2025-08-05 19:15:35 -07:00
31c8c5b10a
bpf: remove KVER_NONE macro
We require 4.9+ for S, and M-2025-11 requires S+.

Generated via:
  removal of #define KVER_NONE then:
  for f in clatd.c netd.c offload.c include/bpf_helpers.h; do sed -r -i 's/KVER_NONE/KVER_4_9/' $f; done

plus addition of space to make things line up

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0661974304163a880a6cc8178f0db1173c1ef22f

Maciej Żenczykowski   commited 2025-08-05 19:15:35 -07:00
22d6747b28
replace TetherDevValue with S32
(mostly autogenerated, with minor tweaks to make it build)

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ieb2be6e5515fe2b9077b1ffeb1c07628213595b3

Maciej Żenczykowski   commited 2025-08-05 19:15:35 -07:00
4e3adbd553
bpf: remove uid = AID_ROOT from bpf program specifications
It's superfluous - we never use any other value, and it's unlikely we ever will.

We only run code in:
 - NetBpfLoad/netd/dnsresolver which all run as uid AID_ROOT,
 - System Server which runs as uid AID_SYSTEM,
 - Network Stack which runs as uid AID_NETWORK_STACK,
so any other values would seem wrong.

However, groups serve the purpose better (hence why the programs are group readable),
and we have pre-existing groups to cover the combinations we care about.

Furthermore we already have sepolicy labels in place as well...

Tested: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I9535eac7eb365735fb3a9769c47ffa7067854dad

Maciej Żenczykowski   commited 2025-08-05 19:15:35 -07:00
ae6c74e56a
replace TetherDevKey with S32
(mostly autogenerated, with minor tweaks to make it build)

Test: TreeHugger, manually
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iab85fc8e035d77347f4b4fd1cd5ecaf94174d997

Maciej Żenczykowski   commited 2025-08-05 19:15:35 -07:00
a3f6c5718d
Use reported satellite suspended and roaming state
Bug: 431296970
Test: TH
Flag: EXEMPT mainline
Change-Id: I4d828bad6419aa2d12bff6f1855314c0060af3f7

Motomu Utsumi   commited 2025-08-06 09:53:30 +09:00
f9065b8898
Merge "clatd: remove DEVICEPREFIX single use define" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-08-05 14:22:36 -07:00
24eea78066
Merge "clatd: no need for argument parsing via getopt" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-08-05 14:20:48 -07:00
cbf8fa5879
Merge "clatd: x86-32 allow socketcall()" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-05 13:52:29 -07:00
c1d8b738dc
Merge "bpf: put canonicalized section name in bpf_prog_def" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-05 13:44:14 -07:00
771c07a870
Merge "Make Dhcp6AddrRegInformPacket constructor public" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-05 12:46:34 -07:00
24c7ddf8c8
clatd: remove DEVICEPREFIX single use define
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ibbeb4775f1b8484c7fb8ebb90f2a165af7ad031f

Maciej Żenczykowski   commited 2025-08-05 12:15:16 -07:00
7001d85a89
clatd: no need for argument parsing via getopt
as we always pass in all of them in a well defined order

Test: TreeHugger, manually
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I93c4a9883983645cbe7d11101aa749dc2faf9d6d

Maciej Żenczykowski   commited 2025-08-05 12:15:03 -07:00
1d2360adec
clatd: x86-32 allow socketcall()
32-bit x86 has a crazy networking calling convention and instead of using
individual system calls has a single multiplexed socketcall()

bionic hasn't finished transitioning to the individual calls yet
which were added to Linux kernels around the 4.10-4.14-ish timeframe.

This does open a bit of security hole, since it effectively allows
all 20-ish networking system calls, but oh well, better than constantly
allowing & logging.

I don't think we'll ever want to enable KILL mode on x86-32 any way.

Test: TreeHugger
Flag: EXEMPT mainline & disabled code
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7228132cfbf716592607d010f64d5adeeb4419aa

Maciej Żenczykowski   commited 2025-08-05 12:14:42 -07:00
2d26f46559
bpf: put canonicalized section name in bpf_prog_def
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I8bc5c888f982dc872ac68840ae6c136a798384d9

Maciej Żenczykowski   commited 2025-08-05 12:14:24 -07:00
adb0f9e2a4
Make Dhcp6AddrRegInformPacket constructor public
Test: TH
Flag: EXEMPT mainline
Change-Id: I20455f9fab089c85de44e5f815c1c5df6f6c0f21

Patrick Rohr   commited 2025-08-05 10:39:23 -07:00
97891a2cfe
Merge changes I17432e14,Iaeb8db2c,Id381a721 into main
* changes:
  NetBpfLoad: remove spurious explicit pin location from pinProg()
  bpf: switch progs from using 'pin_prefix' to 'pin_location'
  bpf/progs: automate function name determination from prog section name

Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-08-05 09:41:19 -07:00
911747b01f
Use FakeSettingsProvider callbacks to simplify CS tests.
Because FakeSettingsProvider and other test infrastructure did
not support settings observers, the tests called internal
ConnectivityService methods to cause the settings to be re-read.
Now that FakeSettingsProvider supports callbacks, use
ContentResolverWithFakeSettingsProvider in the CS tests and just
use the callbacks.

Bug: 397521796
Flag: TEST_ONLY
Test: test-only change
Change-Id: I26d8e98706fec99aa423721bf1474af2f9b60099

Lorenzo Colitti   commited 2025-08-05 18:02:02 +09:00
6e3afc7dc6
Don't call ContentObserver#onChange(..., UserHandle) on S.
S does not have this method (and correspondingly does not have
registerContentObserverAsUser). Use the overload that
does not take a UserHandle.

Bug: 397521796
Flag: TEST_ONLY
Test: test-only change
Change-Id: Icc00abb64fdc47128b93636708990f8ab67057f2

Lorenzo Colitti   commited 2025-08-05 18:02:02 +09:00
7b693cae9f
Merge "OWNERS: satk -> larsberg" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-05 00:52:02 -07:00
56da309bcb
Merge "OWNERS: satk -> larsberg" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-05 00:50:55 -07:00
bdf8ee6c87
NetBpfLoad: remove spurious explicit pin location from pinProg()
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I17432e1495e776afd33df63037c092dc544e36e2

Maciej Żenczykowski   commited 2025-08-04 18:06:05 -07:00
283689d321
bpf: switch progs from using 'pin_prefix' to 'pin_location'
Note: I discovered that C considers:
  char s[4] = "abcd";
a valid initialization without a terminating NULL, resulting
in an invalid string.

(Specifically pinned programs had a '\1' as their last char
due to little endian encoding of the next field in the array
of prog def structs)

The simplest workaround appears to be to explicitly add a "\0"

That results in a string/array that ends with 2 NULLs,
and the compiler will at most *strip* the final one.

ie.
  char s[4] = "abcd\0";
fails to compile.

Obviously:
  char s[100] = "abcd\0";
also does the right thing, since it 0-pads with or without the extra null.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Iaeb8db2cd4750f8521a971382b9f9f9f216195b2

Maciej Żenczykowski   commited 2025-08-04 18:02:51 -07:00
0be5b17e61
bpf: remove spurious/unused {offload,test}@mainline.c
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I6d138416dcbff643ef3d31e06f8573867b849027

Maciej Żenczykowski   commited 2025-08-04 18:00:47 -07:00
c67da55167
bpf/progs: automate function name determination from prog section name
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id381a721bfeabdca3b513d71b805546b09617273

Maciej Żenczykowski   commited 2025-08-04 18:00:47 -07:00
5b7b9f10dc
bpf_{,net_}helpers: change return from 'int' to 'long'
This is to match upstream kernel include/uapi/linux/bpf.h

Since bpf is 64-bit, so long is the appropriate width type,
and not int which is only 32-bit

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2685ec1e9e85aab09615d40c6c518b0251308835

Maciej Żenczykowski   commited 2025-08-04 18:00:47 -07:00
2a23092b41
bpf_helpers: make *all* eBPF programs return long not int
BPF is a 64-bit architecture, so this makes more sense:
int is 32-bits, while long is 64-bits.

In practice this doesn't do much, but it does make sure
the top 32-bits of the 64-bit R0 register are well defined.

I think this might matter when we try to introduce function calls,
as per Linux Kernel eBPF uapi we have (for example):

  long (*callback_fn)(struct bpf_map *map, const void *key, void *value, void *ctx);
  long bpf_for_each_map_elem(struct bpf_map *map, void *callback_fn, void *callback_ctx, u64 flags);

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I0abad90043eff8f8d99c2c29988dd5ce2fef9927

Maciej Żenczykowski   commited 2025-08-04 18:00:47 -07:00
b68add6b56
Merge changes I7542726b,I2d75fb51 into main
* changes:
  NetBpfLoad: remove parsing of "foo/" prefixes
  bpf: rename 'progs' section to '.android_progs'

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 17:19:01 -07:00
e0ba74dc2f
Merge "NetBpfLoad: remove spurious BPF_FS_PATH" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 16:39:05 -07:00
ac378e4e5e
Merge "NetBpfLoad: loadAllObjects - introduce libbpf bool" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 16:07:47 -07:00
abe6bbd2a2
Merge changes Ie996de3f,Ibda074cc,I7c89482e,I718e6eaa into main
* changes:
  NetBpfLoad: make loadObject() return bool
  NetBpfLoad: remove comments in loadAllObjects()
  NetBpfLoad: make loadAllObjects() return a bool
  NetBpfLoad: make loadObject take a fully specified .o path

Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 16:06:11 -07:00
e4a43af2e2
Merge "bpf_prog_def: populate program type and attach_type automatically" into main
Maciej Żenczykowski   authored and   Android (Google) Code Review   commited 2025-08-04 15:12:37 -07:00
f81d507f6a
NetBpfLoad: remove parsing of "foo/" prefixes
in favour of just using the info from the prog definition
which was calculated at compilation time.

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I7542726b4c671177b30f79e90361b2dffdb38ac2

Maciej Żenczykowski   commited 2025-08-04 15:09:29 -07:00
371079226d
NetBpfLoad: remove spurious BPF_FS_PATH
Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia2b748bd7b4712505af0e6a33822517b5cceb06f

Maciej Żenczykowski   commited 2025-08-04 15:07:05 -07:00
94f38014ff
bpf: rename 'progs' section to '.android_progs'
(this matches what we did for maps)

Test: TreeHugger
Flag: EXEMPT mainline
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I2d75fb519f00471a6f1e6b0ffded9f327ecae7b4

Maciej Żenczykowski   commited 2025-08-04 15:07:05 -07:00
eb55711799
Merge "bpf: noop: make DEFINE_BPF_PROG* macros take (foo, "bar") instead of current ("foo/bar")" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 15:02:54 -07:00
c25b0191ad
Merge "NetBpfLoad: make 2 slashes abort" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 14:59:44 -07:00
0049e589de
Merge "bpf: noop: replace second / with _" into main
Treehugger Robot   authored and   Android (Google) Code Review   commited 2025-08-04 14:53:11 -07:00
b1009e65cf
NetBpfLoad: loadAllObjects - introduce libbpf bool
(for ease of testing non-libbpf code path)

Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I98927b328753914359136ae3f4a723f42256d0a0

Maciej Żenczykowski   commited 2025-08-04 14:08:56 -07:00
9c0cd85f66
NetBpfLoad: make loadObject() return bool
Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie996de3fba55f8ddfdc46d20161a87ad9194bf73

Maciej Żenczykowski   commited 2025-08-04 14:08:56 -07:00
0e53637637
NetBpfLoad: remove comments in loadAllObjects()
This is already documented at:
  //packages/modules/Connectivity/bpf/progs/include/bpf_helpers.h
which is the more logical location, since we're trying
to merge all the .o's into 1 per kernel version.

Test: TreeHugger
Flag: EXEMPT mainline/noop
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ibda074ccbbf6efdf36dffd481d953ef38b421637

Maciej Żenczykowski   commited 2025-08-04 14:08:46 -07:00
575c67e61e