Question

J'écris une extension du noyau réseau pour le filtrage des socket. Pour le rendre configurable, un programme Userland lit un fichier de configuration et transmet les informations au kext via un PF_SYSTEM prise.

Si je veux faire fonctionner la prise de socket dès que possible au démarrage du système, comment pourrais-je chorégraphier le lancement?

Mon idée actuelle est d'utiliser Launchd pour démarrer un petit programme d'initialiseur d'utilisateur. Ce programme utiliserait kextload Pour démarrer le kext. Après cela, il lirait le fichier de configuration et parlerait au kext via le PF_SYSTEM prise. Ayant fait son travail, il sortirait alors rapidement.

Une autre option serait d'en avoir deux launchd éléments, un pour le kext (en utilisant kextload) et un autre pour le lecteur de fichiers de configuration Userland. Cela éviterait la fourche, mais serait autrement identique. Dans les deux cas, launchd devrait exécuter un programme Userland rapide rapide.

Cependant, launchd Semble être orienté vers le lancement de Daemons réels, pas pour des tâches rapides qui font leur travail et sortent. La Document de bibliothèque de développeurs dit:

Important: Si votre démon s'arrête trop rapidement après avoir été lancé, Launchd peut penser qu'il s'est écrasé. Les démons qui continuent ce comportement peuvent être suspendus et non lancés lorsque les demandes futures arrivent. Pour éviter ce comportement, ne fermez pas au moins 10 secondes après le lancement.

Cela me donne l'impression que launchd n'est pas la bonne façon de le faire. Comment dois-je organiser le lancement? Mon idée va-t-elle dans la mauvaise direction?

(En tant que note latérale, je souhaite donner à l'utilisateur la possibilité de modifier les options de filtrage pendant l'exécution également. J'imagine que cela peut être effectué simplement en ouvrant une nouvelle connexion PF_SYSTÈME au KEXT chaque fois que des modifications sont nécessaires.)

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top