ip: Use a synthetic buffer for iproute
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 22 Dec 2016 20:48:28 +0000 (15:48 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 10 Jan 2017 00:01:40 +0000 (19:01 -0500)
commit0362326de13b4934887b58cb95d868604881c648
tree08e29803eb74ae1cb1bbaa3428f1b92a3e31bff9
parent93c24912ed81db1f7e13bf2cd1b39c1d28cd52f2
ip: Use a synthetic buffer for iproute

Take a look at how routeread() works.  It's a mess.  Using getline() on it
would occasionally fail - usually with one line that was the size of the
iproute file, with no spaces or \n, and apparently a leading 0.

Instead, this just does what most sythetic files with actual content should
do: alloc a buffer, generate it once, then do reads from that buffer.  This
is safe from situations where the synth file changes in between reads
(which glibc often does even for short files).

Note ipwrite() did not change.  Your writes are commands, not attempts to
change the synth file manually.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/net/devip.c