Annotation of libaitcli/example/tnet.c, revision 1.2

1.2     ! misho       1: #include <stdio.h>
        !             2: #include <string.h>
        !             3: #include <sys/socket.h>
        !             4: #include <sys/select.h>
        !             5: #include <sys/filio.h>
        !             6: #include <netinet/in.h>
        !             7: #include <arpa/inet.h>
        !             8: #include <arpa/telnet.h>
        !             9: #include <aitcli.h>
        !            10: 
        !            11: 
        !            12: int main(int argc, char **argv)
        !            13: {
        !            14:        int ret, s, c;
        !            15:        struct sockaddr_in sin = { sizeof sin, AF_INET, htons(2000), .sin_addr.s_addr = 0x100007f };
        !            16:        struct telnetAttrs *a, A[2];
        !            17:        char str[256], code;
        !            18: 
        !            19:        s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
        !            20:        bind(s, (struct sockaddr*) &sin, sizeof sin);
        !            21:        listen(s, 1);
        !            22:        c = accept(s, (struct sockaddr*) &sin, (socklen_t*) &ret);
        !            23: 
        !            24:        cli_telnet_SetCmd(&A[0], DO, TELOPT_TTYPE);
        !            25:        if (argc > 1) {
        !            26:                cli_telnet_Set_SubOpt(&A[1], TELOPT_TTYPE, TELQUAL_SEND, NULL, 0);
        !            27:                cli_telnet_DumpAttrs(A, 2);
        !            28:                printf("cli_telnetSend()=%d bytes\n", cli_telnetSend(c, &A[0], 1, NULL, 0, 1));
        !            29:                printf("errno=%d %s ret=%d telnetRecv()=%d attributes\n", cli_GetErrno(), cli_GetError(), 
        !            30:                                ret, cli_telnetRecv(c, &a, &ret, str, 255));
        !            31:                cli_telnet_DumpAttrs(a, ret);
        !            32:                free(a);
        !            33: 
        !            34:                printf("str=%s\n", str);
        !            35: 
        !            36:                printf("telnetSend()=%d bytes\n", cli_telnetSend(c, &A[1], 1, "brym\n", 5, 0));
        !            37:                printf("errno=%d %s ret=%d telnetRecv()=%d attributes\n", cli_GetErrno(), cli_GetError(), 
        !            38:                                ret, cli_telnetRecv(c, &a, &ret, str, 255));
        !            39:                cli_telnet_DumpAttrs(a, ret);
        !            40:                ret = 255;
        !            41:                printf("term=%X str=%s get_subopt=%d\n", code, str, cli_telnet_Get_SubOpt(&a[0], &code, str, (char*) &ret));
        !            42:                free(a);
        !            43:        } else {
        !            44:                cli_telnet_SetCmd(&A[1], GA, 0);
        !            45:                cli_telnet_DumpAttrs(A, 2);
        !            46: 
        !            47:                char caps[] = { TELOPT_BINARY, TELOPT_TTYPE, TELOPT_STATUS };
        !            48:                printf("a=%p ret=%d telnet_Answer()=%d\n", a, ret, cli_telnet_Answer(caps, sizeof caps, A, 2, &a, &ret));
        !            49:                cli_telnet_DumpAttrs(a, ret);
        !            50:                free(a);
        !            51: 
        !            52:                printf("telnetSend()=%d bytes\n", cli_telnetSend(c, A, 2, "piuk\n", 5, 0));
        !            53:                printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
        !            54:                                ret, cli_telnetRecv(c, &a, &ret, str, 255));
        !            55:                cli_telnet_DumpAttrs(a, ret);
        !            56:                free(a);
        !            57: 
        !            58:                printf("str=%s\n", str);
        !            59: 
        !            60:                cli_telnet_Set_SubOpt(&A[1], TELOPT_TTYPE, TELQUAL_SEND, NULL, 0);
        !            61:                printf("telnetSend()=%d bytes\n", cli_telnetSend(c, &A[1], 1, NULL, 0, 1));
        !            62:                printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
        !            63:                                ret, cli_telnetRecv(c, &a, &ret, str, 255));
        !            64:                cli_telnet_DumpAttrs(a, ret);
        !            65:                printf("str=%s\n", str);
        !            66:                ret = 255;
        !            67:                printf("term=%X str=%s get_subopt=%d\n", code, str, cli_telnet_Get_SubOpt(&a[0], &code, str, (char*) &ret));
        !            68:                free(a);
        !            69: 
        !            70:                printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
        !            71:                                ret, cli_telnetRecv(c, &a, &ret, str, 255));
        !            72:                cli_telnet_DumpAttrs(a, ret);
        !            73:                free(a);
        !            74: 
        !            75:                printf("str=%s\n", str);
        !            76: 
        !            77:                printf("telnetSend()=%d bytes\n", cli_telnetSend(c, NULL, 0, "ALA-BALA\n", 9, 0));
        !            78:                printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
        !            79:                                ret, cli_telnetRecv(c, NULL, NULL, str, 255));
        !            80:                free(a);
        !            81:                printf("str=%s\n", str);
        !            82:                printf("errno=%d %s ret=%d telnetRecv()=%d bytes\n", cli_GetErrno(), cli_GetError(), 
        !            83:                                ret, cli_telnetRecv(c, &a, &ret, str, 255));
        !            84:                cli_telnet_DumpAttrs(a, ret);
        !            85:                free(a);
        !            86: 
        !            87:                printf("str=%s\n", str);
        !            88:        }
        !            89: 
        !            90:        close(c);
        !            91:        close(s);
        !            92:        return 0;
        !            93: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>