Will network extension run when no user logged in

I read somewhere that any apps installed under /Library/LaunchDaemons will be run systemwide and any apps under /Library/LaunchAgents will be run per-user based.

I noticed that the network extension app (which contains one hosting app and one network extension) is installed under LaunchAgents, not under LaunchDaemon.

Does that mean any network extension required a user to be logged in?

Or will it be continued to work even after a user logged out?

This depends on whether your NE provider is packaged as an app extension or a system extension.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

How can I figure out if it is packaged as an app extension vs a system extension?

And how do I package a a system extension from the package level using pkgbuild?

Usage: pkgbuild [options] --root <root-path> [--component-plist <plist-path>] <package-output-path>
	Build a package from an xcodebuild destination root

Usage: pkgbuild --analyze --root <root-path> <plist-output-path>
	Create template component plist from an xcodebuild destination root

Usage: pkgbuild [options] {--component <component-path>} <package-output-path>
	Build a package from one or more previously-built bundles

And follow-up question.

From the documentation of the content filter https://developer.apple.com/documentation/networkextension/content_filter_providers

A filter data provider receives user network content and examines that content to determine whether to block or allow it.

Does this mean the content filter always demands and operates under a user session?

And if there is no user session will the content filter operate under which session?

@eskimo From some other thread you mentioned

Some NE provider types, ones that only make sense system-wide, are only supported in a system extension. However, the VPN providers (packet tunnel and app proxy) are supported

What are those providers that can be supported systemwide?

How can I figure out if it is packaged as an app extension vs a system extension?

App extensions have the file name extension .appex. System extensions have the file name extension .systemextension.

And how do I package a a system extension from the package level using pkgbuild?

I’m not referring to installer packages here (sorry about the confusion) but rather the packaging of the extension within its container app.

Does this mean the content filter always demands and operates under a user session?

That varies by platform:

  • On iOS, everything is an app extension [1].

  • On macOS, see below.

What are those providers that can be supported systemwide?

macOS supports app extension-based packet tunnel and app proxy providers. Everything else that’s supported on macOS is supported as a system extension.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] iOS doesn’t really have the concept of multiple users [2] and thus functionality that should perhaps be system wide is implemented using app extensions.

[2] Yes, I’m aware of Share iPad but that doesn’t count (don’t ask me why or I’ll start to whimper)-:

@eskimo

So what do you mean by

every *.systemextension will run systemwide on mac os.

right?

For example, from the simplefirewall app, once the user install and started content filter, the extension will still operate while the user logged out. correct?

So what do you mean by

every *.systemextension will run systemwide on mac os.

right?

I’m unable to parse this.

For example, from the simplefirewall app, once the user install and started content filter, the extension will still operate while the user logged out. correct?

Correct.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Will network extension run when no user logged in
 
 
Q