I have finally after nearly a year started setting up data stores with
git
annex
, I am going to try it out with my stash of datasheets, documents and
books for a while. If it holds up to what I expect I will use it for the rest
of my static binary media, video, audio and images.
I have also been revisiting the infuriating torture of learning haskell, with
the
real world haskell book
. I did a haskell course and uni and it was
horrible, so far the real world haskell book has been equally unenjoyable and
slow.
git annex
is written in haskell so the two things sort of tie together. Not
that I plan to hack on
git annex
.
At the end of this month they will stop running buses to where I live, it seems
basic services aren't available to those that aren't quite rural enough.
Preempting the hard switch over I started cycling to work this week.
Work is not close (hence the whole bus thing), at 20km a day commuting I have
done the first 100km week of what will probably be many. Week one has seen two
puncture from a hole in my tyre, hopefully I will have better luck next week.
# kldload vmm
# ifconfig tap0 create
# sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d FreeBSD-11.0-RELEASE-amd64.raw test
Of course that misses out loads of stuff, the network won't work for one. Real
instructions are in the
handbook
. Following in
Hiren Panchasara's
foot steps I am going to use bhyve to test and develop some network
modification in FreeBSD.
I might try and automate the deployment a bit, so I can run a single command
and have fresh vms on a configured network up and running. I suspect I will
have to make some changes that involve rebuilding the whole world tree, if that
is the case I will be trying to figure out how to get builds much much faster.
I am working on an implementation of the
UDP Options draft
at work, this
morning I got the
udp_input
side of processing building. This needs to be
test and gotten working before moving on, before setting up some VMs to test
this I need a way to generate packets with UDP Option data appended.
This seemed like a great occasion to use
go
a little more. There is the
gopacket
library from google that provides raw packet stuff.
images/
I tried for ages to put together a send example that didn't depend on linux.
Eventually I got to the point where I could form crazy malformed arp packets. I
got to the point of generating the above traces in
wireshark
, for some reason
go was sticking 16 bytes into the address fields and creating madness. You will
note in the above arp packet that the length is much longer, that is because go
is appending some extra data for shits and giggles.
Giving up on go I had a look at the python libraries for generating packets,
they are all about the same level of insanity. The
pathspider
project has
some
test probes
for UDP Options using
scapy
.
pathspider
is a lot of stuff to pull in to generate UDP datagrams, I
extracted out the relevant stuff to use with
scapy
directly:
from scapy.all import IP
from scapy.all import UDP
from scapy.all import *
if __name__ == "__main__":
ip = IP(src="139.133.204.4", dst="139.133.204.64")
udp = UDP(sport=2600, dport=2600)
pkt = ip/udp/"Hello world"
pkt.getlayer(1).len = len(pkt.getlayer(1)) #force UDP len
send((pkt/"\x01\x01\x01\x00"))
You can add the numbers together to find that the extra option space is
include, you can also see the
01 01 01 00
bytes at the end of the packet
which are the options I add.