From 28e1915dc9044a206c634783659d6d9c92e0d6a8 Mon Sep 17 00:00:00 2001 From: Michael Blizek Date: Sat, 14 Nov 2009 19:39:18 +0100 Subject: [PATCH] sock recv, add neighbor --- net/cor/cor.h | 27 +++++++++++++-------------- net/cor/neighbor.c | 12 +++++++----- net/cor/sock.c | 3 ++- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/net/cor/cor.h b/net/cor/cor.h index 8e658d0f53c..f642ce1ec29 100644 --- a/net/cor/cor.h +++ b/net/cor/cor.h @@ -184,24 +184,23 @@ struct cor_sockaddr { * reasontextlength may be 0 */ #define CDR_EXECOK 32768 - #define CDR_EXECOK_OK 32769 - -#define CDR_EXECFAILED 32770 - #define CDR_EXECFAILED_UNKNOWN_COMMAND 32771 - #define CDR_EXECFAILED_PERMISSION_DENIED 32772 - #define CDR_TEMPORARILY_OUT_OF_RESSOURCES 32773 - #define CDR_EXECFAILED_CMD_TOO_SHORT 32774 - #define CDR_EXECFAILED_CMD_TOO_LONG 32775 - - #define CDR_EXECFAILED_TARGETADDRTYPE_UNKNOWN 32776 - #define CDR_EXECFAILED_TARGETADDR_DOESNTEXIST 32777 - #define CDR_EXECFAILED_TARGETADDR_PORTCLOSED 32778 - #define CDR_EXECFAILED_LISTENERQUEUE_FULL 32779 + #define CDR_EXECOK_OK 33024 + +#define CDR_EXECFAILED 32769 + #define CDR_EXECFAILED_UNKNOWN_COMMAND 33280 + #define CDR_EXECFAILED_PERMISSION_DENIED 33281 + #define CDR_TEMPORARILY_OUT_OF_RESSOURCES 33282 + #define CDR_EXECFAILED_CMD_TOO_SHORT 33283 + #define CDR_EXECFAILED_CMD_TOO_LONG 33284 + #define CDR_EXECFAILED_TARGETADDRTYPE_UNKNOWN 33285 + #define CDR_EXECFAILED_TARGETADDR_DOESNTEXIST 33286 + #define CDR_EXECFAILED_TARGETADDR_PORTCLOSED 33287 + #define CDR_EXECFAILED_LISTENERQUEUE_FULL 33288 /* * must be sent after CDR_EXEC{OK|FAILED} * CDR_EXEOK_BINDATA[2] bindatalen[4] bindata[bindatalen] */ -#define CDR_BINDATA 32779 +#define CDR_BINDATA 32770 /* result codes for rcv.c/proc_packet */ diff --git a/net/cor/neighbor.c b/net/cor/neighbor.c index 619665a7d38..67ca1b8609f 100644 --- a/net/cor/neighbor.c +++ b/net/cor/neighbor.c @@ -88,7 +88,9 @@ struct notifier_block netdev_notify; static int get_addrtype(__u32 addrtypelen, char *addrtype) { - if (addrtypelen != 2 || addrtype[0] != 'i' || addrtype[1] != 'd') + if (addrtypelen == 2 && + (addrtype[0] == 'i' || addrtype[0] == 'I') && + (addrtype[1] == 'd' || addrtype[1] == 'D')) return ADDRTYPE_ID; return ADDRTYPE_UNKNOWN; @@ -213,7 +215,7 @@ __u32 generate_neigh_list(char *buf, __u32 buflen, __u32 limit, __u32 offset) buf_offset += 2; put_u16(buf + buf_offset, 2, 1);/* addrtypelen */ buf_offset += 2; - put_u16(buf + buf_offset, curr->addrlen, 1);/* addrtypelen */ + put_u16(buf + buf_offset, curr->addrlen, 1);/* addren */ buf_offset += 2; buf[buf_offset] = 'i'; /* addrtype */ buf_offset += 1; @@ -269,7 +271,7 @@ static int apply_announce_addaddr(struct neighbor *nb, __u32 cmd, __u32 len, if (nb->addr != 0) return 0; - + if (len < 4) return 0; @@ -294,7 +296,7 @@ static int apply_announce_addaddr(struct neighbor *nb, __u32 cmd, __u32 len, if (len < 0) return 0; - + if (get_addrtype(addrtypelen, addrtype) != ADDRTYPE_ID) return 0; @@ -949,7 +951,7 @@ static int generate_announce(void) int __init cor_neighbor_init(void) { - addrlen = 16 + strlen(addrtype); + addrlen = 16; addr = kmalloc(addrlen, GFP_KERNEL); if (addr == 0) diff --git a/net/cor/sock.c b/net/cor/sock.c index 6b069ad6b97..72ba0dfc6a0 100644 --- a/net/cor/sock.c +++ b/net/cor/sock.c @@ -449,10 +449,11 @@ int cor_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, if (rc > 0) { copied += rc; + iovread += rc; continue; } - if (0 > copied) + if (copied > 0) break; if (flags & MSG_DONTWAIT) { -- 2.11.4.GIT