|
|
| version 1.1.1.1.2.2, 2011/10/10 13:56:30 | version 1.1.1.1.2.4, 2011/10/13 16:08:52 |
|---|---|
| Line 5 | Line 5 |
| * $Author$ | * $Author$ |
| * $Id$ | * $Id$ |
| * | * |
| *************************************************************************/ | ************************************************************************* |
| The ELWIX and AITNET software is distributed under the following | |
| terms: | |
| All of the documentation and software included in the ELWIX and AITNET | |
| Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> | |
| Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | |
| by Michael Pounov <misho@elwix.org>. All rights reserved. | |
| Redistribution and use in source and binary forms, with or without | |
| modification, are permitted provided that the following conditions | |
| are met: | |
| 1. Redistributions of source code must retain the above copyright | |
| notice, this list of conditions and the following disclaimer. | |
| 2. Redistributions in binary form must reproduce the above copyright | |
| notice, this list of conditions and the following disclaimer in the | |
| documentation and/or other materials provided with the distribution. | |
| 3. All advertising materials mentioning features or use of this software | |
| must display the following acknowledgement: | |
| This product includes software developed by Michael Pounov <misho@elwix.org> | |
| ELWIX - Embedded LightWeight unIX and its contributors. | |
| 4. Neither the name of AITNET nor the names of its contributors | |
| may be used to endorse or promote products derived from this software | |
| without specific prior written permission. | |
| THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND | |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
| FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| SUCH DAMAGE. | |
| */ | |
| #include "global.h" | #include "global.h" |
| Line 27 SetRemoteWinz(int h, struct ether_addr *ea, u_char *bu | Line 64 SetRemoteWinz(int h, struct ether_addr *ea, u_char *bu |
| pos[1] = htons(ws.ws_col); | pos[1] = htons(ws.ws_col); |
| pos[2] = htons(ws.ws_xpixel); | pos[2] = htons(ws.ws_xpixel); |
| pos[3] = htons(ws.ws_ypixel); | pos[3] = htons(ws.ws_ypixel); |
| if (pktSend(h, ANSH_FLG_WINZ, Crypted, buf, sizeof ws, ea) == -1) | if (pktSend(h, 0, ANSH_FLG_WINZ, Crypted, buf, sizeof ws, ea) == -1) |
| return -1; | return -1; |
| return 0; | return 0; |
| Line 43 ConnectL2(int h, struct ether_addr *ea, int len) | Line 80 ConnectL2(int h, struct ether_addr *ea, int len) |
| int rlen, ret = 0; | int rlen, ret = 0; |
| char flg, nl = 0; | char flg, nl = 0; |
| u_char *buf, *str; | u_char *buf, *str; |
| u_int s, Seq = 0; | |
| FTRACE(3); | FTRACE(3); |
| Line 66 ConnectL2(int h, struct ether_addr *ea, int len) | Line 104 ConnectL2(int h, struct ether_addr *ea, int len) |
| ret = -1; | ret = -1; |
| break; | break; |
| } | } |
| if (FD_ISSET(STDIN_FILENO, &rfd)) { | if (FD_ISSET(h, &rfd)) { |
| rlen = len; | |
| memset(buf, 0, rlen); | |
| flg = pktRecv(h, &s, &Crypted, buf, &rlen, ð); | |
| if (flg == ANSH_FLG_ERR) { | |
| ret = -1; | |
| break; | |
| } | |
| if (ntohs(eth.ether_type) != ANSH_ID) { | |
| VERB(4) LOG("different service id %d / %d\n", eth.ether_type, ANSH_ID); | |
| continue; | |
| } | |
| if (flg == ANSH_FLG_EOF) { | |
| VERB(3) LOG("receive EOF going down.\n"); | |
| Kill++; | |
| } | |
| if (flg != ANSH_FLG_OK) | |
| continue; | |
| if (s <= Seq) | |
| continue; | |
| else if (s > (Seq + 1)) | |
| VERB(1) LOG("LOST PACKET(s) detect: %d; received seq=%d - %d", | |
| s - (Seq + 1), s, Seq); | |
| Seq = s; | |
| if (Crypted) { | |
| str = cryptBuffer(buf, rlen, Crypted); | |
| if (str) { | |
| memcpy(buf, str, rlen); | |
| free(str); | |
| } | |
| } | |
| rlen = write(STDOUT_FILENO, buf, rlen); | |
| if (rlen == -1) { | |
| printf("Error:: write(stdout) #%d - %s\n", errno, strerror(errno)); | |
| ret = -1; | |
| break; | |
| } | |
| } else { | |
| memset(buf, 0, len); | memset(buf, 0, len); |
| rlen = read(STDIN_FILENO, buf, len); | rlen = read(STDIN_FILENO, buf, len); |
| if (rlen == -1) { | if (rlen == -1) { |
| Line 113 ConnectL2(int h, struct ether_addr *ea, int len) | Line 190 ConnectL2(int h, struct ether_addr *ea, int len) |
| } | } |
| } | } |
| rlen = pktSend(h, ANSH_FLG_CPOUT, Crypted, buf, rlen, ea); | rlen = pktSend(h, ++Seq, ANSH_FLG_CPOUT, Crypted, buf, rlen, ea); |
| if (rlen == ANSH_FLG_ERR) { | if (rlen == ANSH_FLG_ERR) { |
| ret = -1; | |
| break; | |
| } | |
| } else { | |
| rlen = len; | |
| memset(buf, 0, rlen); | |
| flg = pktRecv(h, &Crypted, buf, &rlen, ð); | |
| if (flg == ANSH_FLG_ERR) { | |
| ret = -1; | |
| break; | |
| } | |
| if (ntohs(eth.ether_type) != ANSH_ID) { | |
| VERB(4) LOG("different service id %d / %d\n", eth.ether_type, ANSH_ID); | |
| continue; | |
| } | |
| if (flg == ANSH_FLG_EOF) { | |
| VERB(3) LOG("receive EOF going down.\n"); | |
| Kill++; | |
| } | |
| if (flg != ANSH_FLG_OK) | |
| continue; | |
| if (Crypted) { | |
| str = cryptBuffer(buf, rlen, Crypted); | |
| if (str) { | |
| memcpy(buf, str, rlen); | |
| free(str); | |
| } | |
| } | |
| rlen = write(STDOUT_FILENO, buf, rlen); | |
| if (rlen == -1) { | |
| printf("Error:: write(stdout) #%d - %s\n", errno, strerror(errno)); | |
| ret = -1; | ret = -1; |
| break; | break; |
| } | } |