Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Mar 2015 20:09:08 +0800
From:      Hao Sun <sunhao2013@gmail.com>
To:        Gabor Pali <pgj@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Robert Watson <rwatson@freebsd.org>
Subject:   Re: Self introduciton of Hao Sun and thoughts on LibNetstat
Message-ID:  <CADWmZpnOrJahwBWJOTG6RRkr6hanZR9iYZkufuAcHiOHnOYWqg@mail.gmail.com>
In-Reply-To: <CAHnG2CyPWsi2VghASzgMqGHpMoMsMnE1w6eCxtsxmEmeCd28JQ@mail.gmail.com>
References:  <CADWmZpmq7aVxk5bap-ConjKesnmVZuEm0S9Nn%2Bwt6guc-GyfgA@mail.gmail.com> <CAHnG2CyPWsi2VghASzgMqGHpMoMsMnE1w6eCxtsxmEmeCd28JQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi G=C3=A1bor,

Thanks a lot for the relpy. Your comments provide me a lot of valuable
information, and now I'm getting clearer about what the target is and what
need I do in the future.

Following your guidance, I've cloned the FreeBSD mirror from GitHub and
will get down to have an initial scratch with the latest version. Yeah, 6
years passed by, a lot have been changed and updated during that period.
Also I had a glance over the existing user-space code and get cleared about
the basic code strcture and abstratactions of the previous version. Now I
think it's time to propose my ideas about the project and write the
proposal.

However there is one more quesiton. On the project's wiki page (
https://wiki.freebsd.org/LibNetstat) , I think the target for GSoC 2015 is
to finish the tasks haven't been done in the following table. But accroding
to your comments in the emails, it seems like I need to start the job from
scratch. Thus the question is should I keep the existing code and add new
features to the previous version or just start the project from the very
beginning?


[image: =E5=86=85=E5=B5=8C=E5=9B=BE=E7=89=87 2]

Thanks,
Hao


2015-03-21 16:57 GMT+08:00 Gabor Pali <pgj@freebsd.org>:

> [Please CC me in your replies, I am not on freebsd-hackers.]
>
> Hi Hao,
>
> 2015-03-19 1:53 GMT+01:00 Hao Sun <sunhao2013@gmail.com>:
> > I saw the project introduction of LibNetstat on
> > FreeBSD=E2=80=99s GSoC 15=E2=80=99 homepage and was attracted by the pr=
oject.
>
> Thank you for contacting us, it is always good to see fresh people
> around who would like to contribute to the Project, especially as part
> of the Google Summer of Code program.
>
> > I think the LibNetstat would be fitful for me because I have related ri=
ch
> > project experiences on C, namely the FontDesigner project in the lab, t=
he
> > face recognition plugin in Muticoreware and other course projects.
>
> I believe this project is mostly about refactoring the netstat(1)
> utility into a library and make the utility its client.  This could
> come with many advantages, such as other programs could easily access
> the services it would offer and this would also help with accessing
> all the networking-related statistics in an platform-independent way,
> even through the network.  The goal of the project is to come up with
> an API and ABI that is convenient to use and captures all the concepts
> that are currently used in netstat(1).
>
> > I read the project description carefully and have done the following jo=
bs
> > since the monitoring organisations were published.
>
> I think those are indeed good first steps in order to get involved.
>
> > 1. Check out the code from //depot/projects/soc2009/pgj_libstat/. As th=
e
> p4
> > introduction article shows, maybe I need a FreeBSD.org account to get
> > access into our depot. Thus would you please offer helps to create an
> > account?
>
> Please note that project you are talking about was done almost 6 years
> ago.  Things can change a lot even in a year, so you may find yourself
> starting again from scratch (which may be equally either good or bad
> news for you).  One of those changes is that Perforce has shifted out
> of the focus in the recent years, students have started to use the
> Project's Subversion repositories for their works, or I believe, now
> they can even choose to work with git, through GitHub.
>
> So, I guess you would only need a GitHub account and you are ready to
> fork the Git mirror of the FreeBSD src repository there:
>
> https://github.com/freebsd/freebsd
>
> > 2. I plan to run some demo codes to have an insight into the current
> version
> > of LibNetstat. Do we have demo codes or test cases which could help me
> > get familir with the code?
>
> It is also keep in mind that the original libnetstat code was written
> and kept updated until 2011, which assumes an older base system (and
> kernel) version of FreeBSD.  Again, many changes might have changed
> (and I am sure they have indeed changed) in the recent years, like the
> kernel now has nice atomic counters for networking statistics (thanks
> to Gleb Smirnoff) which was one of the blocker issues when I stopped
> working on the project.
>
> Of course, if you would like to study the code that we wrote and you
> have questions about it, I am happy answer them -- note that you can
> access all the sources through the P4DB web, you do not have to check
> out anything.  However, please also note I am not officially a src
> committer so my comments may not be as precise as for example,
> Robert's.  I have gained some experienced in working with the
> networking parts of the FreeBSD kernel and I have a few years of
> experience in hacking on various projects ranging from computer games
> to compilers, but that is not my area of expertise therefore I may not
> be up-to-date enough on the subject.
>
> > 3. After Step #2, I want to read some existing modules, for instance,
> > routing abstractions. I believe this step would help me get clear how t=
o
> > make the original interface less ABI-sensitive. So do you have any
> > suggestions where to start this step?
>
> Most of the userspace code can be found here:
>
>
> https://p4web.freebsd.org/@md=3Dd&cd=3D//depot/projects/soc2009/pgj_libst=
at/src/lib/&c=3DhL4@//depot/projects/soc2009/pgj_libstat/src/lib/libnetstat=
/?ac=3D83
>
> They may have related kernel-side changes, but for the first stab, I
> think that is what you may want to see.  "netstat.h" and
> "netstat_internal.h" may tell you more about the abstractions I
> created.  Feel free to dump them, and start from scratch, perhaps I
> would do them differently myself if I started to work on this project
> today.
>
> For further reference, you can also study the sister libraries of
> libnetstat, libprocstat and libmemstat.  They are probably much more
> up-to-date with the current state of the development:
>
> https://github.com/freebsd/freebsd/tree/master/lib/libmemstat
> https://github.com/freebsd/freebsd/tree/master/lib/libprocstat
>
> Cheers,
> G=C3=A1bor
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADWmZpnOrJahwBWJOTG6RRkr6hanZR9iYZkufuAcHiOHnOYWqg>