Assume natural alignment for IP & ether addrs
[akaros.git] / kern / src / net / netaux.c
1 // INFERNO
2 #include <vfs.h>
3 #include <kfs.h>
4 #include <slab.h>
5 #include <kmalloc.h>
6 #include <kref.h>
7 #include <string.h>
8 #include <stdio.h>
9 #include <assert.h>
10 #include <error.h>
11 #include <cpio.h>
12 #include <pmap.h>
13 #include <smp.h>
14 #include <ip.h>
15
16 void hnputv(void *p, int64_t v)
17 {
18         uint8_t *a;
19
20         a = p;
21         hnputl(a, v >> 32);
22         hnputl(a + 4, v);
23 }
24
25 void hnputl(void *p, uint32_t v)
26 {
27         uint8_t *a;
28
29         a = p;
30         a[0] = v >> 24;
31         a[1] = v >> 16;
32         a[2] = v >> 8;
33         a[3] = v;
34 }
35
36 void hnputs(void *p, uint16_t v)
37 {
38         uint8_t *a;
39
40         a = p;
41         a[0] = v >> 8;
42         a[1] = v;
43 }
44
45 int64_t nhgetv(void *p)
46 {
47         uint8_t *a;
48
49         a = p;
50         return ((int64_t) nhgetl(a) << 32) | nhgetl(a + 4);
51 }
52
53 uint32_t nhgetl(void *p)
54 {
55         uint8_t *a;
56
57         a = p;
58         return (a[0] << 24) | (a[1] << 16) | (a[2] << 8) | (a[3] << 0);
59 }
60
61 uint16_t nhgets(void *p)
62 {
63         uint8_t *a;
64
65         a = p;
66         return (a[0] << 8) | (a[1] << 0);
67 }