tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Apply for GSoC: Inetd enhancements -- Add new features to inetd

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
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.

Solomon Ritzow

On Mon, Apr 18, 2022 at 9:57 PM Sixu Tan <> 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) (
> 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
> No.
> How do we contact you for question, comments, suggestions, etc.?
> email:
> 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

Home | Main Index | Thread Index | Old Index