<div dir="ltr">Hi. My name is Sahil. I am currently pursuing a dual major in Computer Science and Economics. I am sorry I am introducing myself quite late as I had my mid semester exams in college.<br><br>I am interested in several projects that are being offered this year as a part of GSoC and would like to work on one of them.<br><br>I am especially interested in working with strace since I have been using strace as an end user for a few months while participating in CTFs (especially for debugging shellcode). I have been using C for quite some time for a few mini projects (for example, I am currently working on a semester-long compiler construction project, which is to be written in C, as part of my "compiler construction" course in college).<br><br>However, I am quite new to system programming. I intend to get into this field in the long run and I also wish to become a long-term contributor to strace.<br><br>I am interested in the following projects and would like to know more about them:<br>[1] Support for BTF and other BPF decoding improvements<br>[2] Implement an ioctl decoder<br>[3] Implement a netlink decoder<br><br>I have already gone through the following:<br>[1] <a href="https://strace.io/wiki/NewContributorGuide">https://strace.io/wiki/NewContributorGuide</a><br>[2] <a href="https://strace.io/wiki/MicroProjects">https://strace.io/wiki/MicroProjects</a><br>[3] <a href="https://strace.io/wiki/FeatureRequests">https://strace.io/wiki/FeatureRequests</a><br>[4] <a href="https://github.com/strace/strace/issues?q=is%3Aissue+is%3Aopen+-label%3Apatch">https://github.com/strace/strace/issues?q=is%3Aissue+is%3Aopen+-label%3Apatch</a><br><br>Given the projects that I am interested in, I feel that it might be appropriate for me to work on implementing a syscall/ioctl_command/netlink_protocol parser as a microproject. Would this be a reasonable microproject to work on or is there something else that you think is more appropriate?<br><br>To get an idea of how an ioctl command parser is written, I have already started looking at the codebase and have looked at the patches in the following issues:<br>[1] <a href="https://github.com/strace/strace/issues/44">https://github.com/strace/strace/issues/44</a> (decode SNDCTL_* ioctls)<br>[2] <a href="https://github.com/strace/strace/issues/52">https://github.com/strace/strace/issues/52</a> (add support for decoding USBDEVFS* ioctl commands)<br><br>I also had a few questions:<br><br>[1] In src/ioctls.c (<a href="https://github.com/strace/strace/blob/master/src/ioctl.c#L346">https://github.com/strace/strace/blob/master/src/ioctl.c#L346</a>), there is a function called ioctl_decode(). Is this where the actual ioctl decoder is called for a specific syscall?<br><br>[2] I went through this blog post (<a href="http://www.saruta.eu/post/2016-12-09-netlink_overview_and_its_strace_parsers/">http://www.saruta.eu/post/2016-12-09-netlink_overview_and_its_strace_parsers/</a>) where the author talks about how a netlink parser is implemented. But I found it quite hard to understand. I was wondering if there are more resources or documentation that could point me in the right direction?<br><br>I really look forward to hearing from you.<br><br>Regards<br>Sahil</div>