all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Rohan Prinja <rohan.prinja@gmail.com>
To: guix-devel <guix-devel@gnu.org>
Subject: [GSoC] Progress Report 1
Date: Thu, 11 Jun 2015 13:24:15 +0530	[thread overview]
Message-ID: <CAAT4Lc5ut3U1eS2Ep7rKPp4K3OF-xqcppXUUU3nHbpvw8pV_Ww@mail.gmail.com> (raw)

Hi Guix,

Here is my long-overdue first progress report for my Summer of Code
project to write a DHCP client in Scheme and integrate it with Guix
and dmd.

Pre-coding activities completed:
1 Read RFCs (1541+2131 - DHCPv4, 826 - ARP, 5227 - IP address conflict
detection through ARP, 1497+1533+2132 - DHCP options, 4039 - Rapid
Commit, 3679+3942 - clarifying the usage of some DHCP options)
2 Looked at the source for lwip's implementation of DHCP and ISC's dhclient
3 Revised socket programming and read the Guile manual

Code written thus far (the source is at
http://git.savannah.gnu.org/cgit/guix/dhcp.git):
1 Wrote classes for DHCP packets, network interfaces, DHCP options and
DHCP configuratiion instances.
2 Wrote code to read the system's network interfaces and populate the
network-interface instances' fields (name, hwaddr, family).
3 Refactored the above to records on the advice given by Ludo (who
pointed out that OOPS is unidiomatic and in any case not really needed
here).
4 Wrote incomplete testing code for the the items in 1 (incomplete
because the tests did not test the serialisation of DHCP message
records into bytevectors).
5 Began writing code to send a bytevector to a specified sockaddr, and
began the skeleton of the main client module.

Current focus:
1 Test the code to send and receive packets
2 Code to make and send ARP messages on the link layer, and
corresponding unit tests
2 Complete the (dhcp client) module (this includes the implementation
of the main DHCP client algorithm, and lease storage), and complete
the (dhcp *) modules' tests
3 Read the dhcpd server source (this package:
http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/admin.scm#n378)
to figure out how to have a server for test the client

Questions:
1 Ludo: I looked at the implementations of packed structs. DHCP
packets are in general variable-length because of the options field,
while packed structs require need to have the field lengths known
ahead of time. So do you recommended making some changes to the packed
structs implementations to accomodate the variable-length options
field (I'll have to think about how to do this) or simply refactor the
serializer/deserializer I wrote back when the code was in GOOPS to use
records?
2 Ludo: please could you clarify exactly what the Copyright header for
a source file should look like when it uses code from another project?
For example, (dhcp interfaces) copies code from (guix build syscalls)
(a couple of variable definitions that (guix build syscalls) didn't
export).

Thank you,
Regards,
Rohan

             reply	other threads:[~2015-06-11  7:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-11  7:54 Rohan Prinja [this message]
2015-06-12  8:02 ` [GSoC] Progress Report 1 Ludovic Courtès
2015-06-12  8:21   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAT4Lc5ut3U1eS2Ep7rKPp4K3OF-xqcppXUUU3nHbpvw8pV_Ww@mail.gmail.com \
    --to=rohan.prinja@gmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.