Hello Xisu Tan, There was another person who was going to work on inetd for GSoC as well, but we haven't heard anything from them on the mailing list for a little while. It might be helpful to read through part of the thread they started on the mailing list (https://mail-index.netbsd.org/tech-userlevel/2022/03/15/msg013305.html) which has some discussion of "preforking". Maybe they're working on the project, I have no idea.
I was a student at Western Washington University and worked on the Inetd Enhancements project as part of a group for my senior project, until June or July of last year. You can probably ignore the "Per service configuration file" part of the project, since my senior project group did something related by adding a new config file syntax to inetd. You'll probably hear from other people on this mailing list, and you can propose any sort of feature and get feedback on ideas you have here. My group did also implement a per-IP-address rate limiter (you could take a look at our code and see if there's room for improvement). There are a couple parts of the Inetd Enhancements project which my group didn't get around to implementing, which would be good to work on (in my biased opinion). Specifically, the "Add a separate way to turn services on and off, so they can be defined statically (such as in /usr/share) and turned on and off from /etc." would be potentially useful and was discussed a bit when I was working on inetd. The new config file syntax we implemented added "include directives" (to put configuration in external files) and leaves room for the possibility of enabling or disabling a service by adding directive lines to the config file. You could work on a way to enable and disable config lines by writing something like "httpd on;" in a config file after declaring an "httpd" service that is "off". I could show you in more detail what I think this would entail. The other person who communicated on this mailing list recently about GSoC mentioned working on the "blacklist support" listed on the project page. Hopefully this email gets to the mailing list, I replied last night but it didn't seem to reach tech-userlevel. Sincerely, Solomon Ritzow sold...@gmail.com On Mon, Apr 18, 2022 at 9:57 PM Sixu Tan <sixu....@berkeley.edu> wrote: > > Dear NetBSD community, > Sorry for contacting you just before the application deadline. I Hope it's > not too late to apply for this super cool project in GSoC! > I am a 3rd year CS student from Southern University of Science and > Technology, China, and I'm currently an exchange student at UC, Berkeley. > This semester I took CS162 Operating System course at Berkeley, which made me > obsessed with the operating system. But since I do not have any real-world > project experience, I believe it's better to start with an easy-level > project, hence I feel like applying for this project. My basic information is > as follows, and my CV is attached. > > About your project > What is the goal of the project? (Short overview) > Accumulate open-source development experience, and learn how to work on a > real-world project. > > What will be the deliverables of the project? (Code, documentation, ...) > There will be a draft design document before coding period, and a revised > version of document at each evaluation point. > There will be a final document at the final evaluation, and a final version > of code. > > Give an overview of how you intend to reach the project's goal in the form of > milestones and a schedule. > Now - June 13, familiarize myself with NetBSD environment and investigate the > source code of Inetd, as well as similar functions in other OSs. > June 13 - June 29, work on Prefork and Per service configuration file > June 30 - July 25, work on rate limiting features and logging improvements > Before Phase 1 Evaluation, try finishing the primary features. > July 25 - Sep 5 Based on the previous process, select advanced features to > implement. > At final evaluation, try finishing at least two of the advanced features. > > Is similar software already available elsewhere, e.g. for Linux or any other > BSD? > Yes, replacements of Inetd include xinetd and launchd on Mac OS, and rlinetd > on distributions of Linux. > > Is the project a port of software, or a rewrite? (remember: No GPL in the > NetBSD kernel!) > I think it's a port of software. > > About your project and NetBSD > If your working area is the core NetBSD operating system: have you installed > NetBSD and made first experiences with hands-on configuration? > Yes > Have you rebuilt the kernel and the userland, either in full or in parts? > No, I haven't, but I will try to do that as soon as possible. > > Have you found the relevant places that your project is based on in the > source code, and read through it? > Yes I have found it, it's at src/usr.sbin/inetd/inetd.c, but I haven't read > through, I will try as soon as possible. > > How will your project integrate into NetBSD? (Userland tool, kernel > subsystem, driver, patch set, pkgsrc, ...) > I think my work will be to add features to an existing software, so I do not > need to integrate on my own. > > What interfaces in NetBSD will your project use? (Go into details here! What > module/file names, functions, data structures etc. are of relevance for your > project? > To what degree are you familiar with those interfaces? (not/some/very, > details?) > Most of the changes will be in the file src/usr.sbin/inetd/inetd.c > For Prefork, change spawn(struct servtab *sep, int ctrl) I plan to maintain a > process pool in the spawn function. > For Per service configuration, change getnetconfigent() and set the config > and set the configuration for each service. I thinks it can be realized by > maintaining a map from service to config file. > For other features, I haven't dive deeply into them due to the application > deadline. But I will soon after the application. > I have just started, so I'm not very familiar with them, but I think they are > sort of straightforward. > > Is knowledge on other topics required for this project, e.g. on hardware, > software other than NetBSD, APIs, protocols, etc.? If so, give details and > references. > I think understanding how computer networks work will be helpful to this > project. > > To what degree are you familiar with those? (not/some/very, details?) > I have taken computer networking course in FA2021, and I got A+ in that > course. I have experience in socket programming with both Python and C/C++. > > If the project involves hardware (e.g. writing drivers, doing a port to new > hardware, ...): do you own the hardware or have access to? > > About you > Can you list some prior projects that you have worked on so far? Include > details like programming language, duration, number of people involved, > project goal, if you used CVS, SVN or similar, and whatever else we may find > thrilling! If you have a CV/resume online, feel free to include a link. > My CV is attached. And here is my github link: TANSixu (MarSxT) (github.com) > > Do you have any prior experience with programming NetBSD? In what area? If > you did send some problem reports (PRs) or patches, please include references. > No. > > Have you previously discussed your project within NetBSD, either on a mailing > list or with some specific developers? If so, please give us either the > names/email addresses of those developers or point us towards the discussions > on our list (via http://mail-index.NetBSD.org/). > No. > > How do we contact you for question, comments, suggestions, etc.? > email: sixu....@berkeley.edu > Or you can provide other platforms and I will register. > > Is there anything else you'd like us to know? Did we forget any important > details or questions? > I have a question regarding the project: Do we have a test suite for this > project that can perform a sanity check? If not, how can I check if my > program runs correctly? Thanks. > > Looking forward to your reply! > > Thanks, > Sixu Tan