Added explicit errno reporting from error() API.
[akaros.git] / kern / src / net / ipifc.c
index ec4176a..a6d7d12 100644 (file)
@@ -206,7 +206,7 @@ static char *ipifcunbind(struct Ipifc *ifc)
        while (ifc->lifc) {
                err = ipifcremlifc(ifc, ifc->lifc);
                if (err)
-                       error(err);
+                       error(EFAIL, err);
        }
 
        ifc->m = NULL;
@@ -447,8 +447,8 @@ char *ipifcadd(struct Ipifc *ifc, char **argv, int argc, int tentative,
        } else {        // default values
                lifc->onlink = 1;
                lifc->autoflag = 1;
-               lifc->validlt = 0xffffffff;
-               lifc->preflt = 0xffffffff;
+               lifc->validlt = UINT64_MAX;
+               lifc->preflt = UINT64_MAX;
                lifc->origint = NOW / 10 ^ 3;
        }
        lifc->next = NULL;
@@ -684,7 +684,7 @@ static char *ipifcconnect(struct conv *c, char **argv, int argc)
        while (ifc->lifc) {
                err = ipifcremlifc(ifc, ifc->lifc);
                if (err)
-                       error(err);
+                       error(EFAIL, err);
        }
        wunlock(&ifc->rwlock);
        poperror();
@@ -927,7 +927,7 @@ static struct Ipself *freeipself;
 static void iplinkfree(struct Iplink *p)
 {
        struct Iplink **l, *np;
-       uint32_t now = NOW;
+       uint64_t now = NOW;
 
        l = &freeiplink;
        for (np = *l; np; np = *l) {
@@ -946,7 +946,7 @@ static void iplinkfree(struct Iplink *p)
 static void ipselffree(struct Ipself *p)
 {
        struct Ipself **l, *np;
-       uint32_t now = NOW;
+       uint64_t now = NOW;
 
        l = &freeipself;
        for (np = *l; np; np = *l) {
@@ -1187,7 +1187,7 @@ int v6addrtype(uint8_t * addr)
        return unknownv6;
 }
 
-#define v6addrcurr(lifc) (( (lifc)->origint + (lifc)->preflt >= (NOW/10^3) ) || ( (lifc)->preflt == 0xffffffff ))
+#define v6addrcurr(lifc) (( (lifc)->origint + (lifc)->preflt >= (NOW/10^3) ) || ( (lifc)->preflt == UINT64_MAX ))
 
 static void findprimaryipv6(struct Fs *f, uint8_t * local)
 {
@@ -1258,7 +1258,7 @@ void findlocalip(struct Fs *f, uint8_t * local, uint8_t * remote)
 
        qlock(&f->ipifc->qlock);
        r = v6lookup(f, remote, NULL);
-       version = (memcmp(remote, v4prefix, IPv4off) == 0) ? V4 : V6;
+       version = isv4(remote) ? V4 : V6;
 
        if (r != NULL) {
                ifc = r->rt.ifc;
@@ -1615,9 +1615,9 @@ char *ipifcaddpref6(struct Ipifc *ifc, char **argv, int argc)
 {
        uint8_t onlink = 1;
        uint8_t autoflag = 1;
-       long validlt = 0xffffffff;
-       long preflt = 0xffffffff;
-       long origint = NOW / 10 ^ 3;
+       uint64_t validlt = UINT64_MAX;
+       uint64_t preflt = UINT64_MAX;
+       uint64_t origint = NOW / 10 ^ 3;
        uint8_t prefix[IPaddrlen];
        int plen = 64;
        struct Iplifc *lifc;