Annotation of embedaddon/lighttpd/src/test_configfile.c, revision 1.1

1.1     ! misho       1: #include "configfile-glue.c"
        !             2: 
        !             3: #include <assert.h>
        !             4: #include <stdlib.h>
        !             5: #include <stdio.h>
        !             6: 
        !             7: const struct {
        !             8:     const char *string;
        !             9:     const char *rmtstr;
        !            10:     int rmtfamily;
        !            11:     int expect;
        !            12: } rmtmask[] = {
        !            13:     { "1.0.0.1/1",          "1.0.0.1",         AF_INET, 1 }
        !            14:    ,{ "254.254.254.254/1",  "254.0.0.1",       AF_INET, 1 }
        !            15:    ,{ "254.254.254.252/31", "254.254.254.253", AF_INET, 1 }
        !            16:    ,{ "254.254.254.253/31", "254.254.254.254", AF_INET, 0 }
        !            17:    ,{ "254.254.254.253/32", "254.254.254.254", AF_INET, 0 }
        !            18:    ,{ "254.254.254.254/32", "254.254.254.254", AF_INET, 1 }
        !            19:   #ifdef HAVE_IPV6
        !            20:    ,{ "2001::/3",           "2001::1",         AF_INET6, 1 }
        !            21:    ,{ "2f01::/5",           "2701::1",         AF_INET6, 0 }
        !            22:    ,{ "2f01::/32",          "2f01::1",         AF_INET6, 1 }
        !            23:    ,{ "2f01::/32",          "2f02::1",         AF_INET6, 0 }
        !            24:    ,{ "2001::1/127",        "2001::1",         AF_INET6, 1 }
        !            25:    ,{ "2001::1/127",        "2001::2",         AF_INET6, 0 }
        !            26:    ,{ "2001::2/128",        "2001::2",         AF_INET6, 1 }
        !            27:    ,{ "2001::2/128",        "2001::3",         AF_INET6, 0 }
        !            28:    ,{ "1.0.0.1/1",          "::ffff:1.0.0.1",          AF_INET6, 1 }
        !            29:    ,{ "254.254.254.254/1",  "::ffff:254.0.0.1",        AF_INET6, 1 }
        !            30:    ,{ "254.254.254.252/31", "::ffff:254.254.254.253",  AF_INET6, 1 }
        !            31:    ,{ "254.254.254.253/31", "::ffff:254.254.254.254",  AF_INET6, 0 }
        !            32:    ,{ "254.254.254.253/32", "::ffff:254.254.254.254",  AF_INET6, 0 }
        !            33:    ,{ "254.254.254.254/32", "::ffff:254.254.254.254",  AF_INET6, 1 }
        !            34:    ,{ "::ffff:1.0.0.1/97",          "1.0.0.1",         AF_INET, 1 }
        !            35:    ,{ "::ffff:254.254.254.254/97",  "254.0.0.1",       AF_INET, 1 }
        !            36:    ,{ "::ffff:254.254.254.252/127", "254.254.254.253", AF_INET, 1 }
        !            37:    ,{ "::ffff:254.254.254.253/127", "254.254.254.254", AF_INET, 0 }
        !            38:    ,{ "::ffff:254.254.254.253/128", "254.254.254.254", AF_INET, 0 }
        !            39:    ,{ "::ffff:254.254.254.254/128", "254.254.254.254", AF_INET, 1 }
        !            40:   #endif
        !            41: };
        !            42: 
        !            43: static void test_configfile_addrbuf_eq_remote_ip_mask (void) {
        !            44:        int i, m;
        !            45:        buffer * const s = buffer_init();
        !            46:        char *slash;
        !            47:        sock_addr rmt;
        !            48: 
        !            49:        for (i = 0; i < (int)(sizeof(rmtmask)/sizeof(rmtmask[0])); ++i) {
        !            50:              #ifndef HAVE_INET_PTON
        !            51:                rmt.ipv4.sin_family = AF_INET;
        !            52:                rmt.ipv4.sin_addr.s_addr = inet_addr(rmtmask[i].rmtstr);
        !            53:              #else
        !            54:                if (rmtmask[i].rmtfamily == AF_INET) {
        !            55:                        rmt.ipv4.sin_family = AF_INET;
        !            56:                        inet_pton(AF_INET, rmtmask[i].rmtstr, &rmt.ipv4.sin_addr);
        !            57:                #ifdef HAVE_IPV6
        !            58:                } else if (rmtmask[i].rmtfamily == AF_INET6) {
        !            59:                        rmt.ipv6.sin6_family = AF_INET6;
        !            60:                        inet_pton(AF_INET6, rmtmask[i].rmtstr, &rmt.ipv6.sin6_addr);
        !            61:                #endif
        !            62:                } else {
        !            63:                        continue;
        !            64:                }
        !            65:              #endif
        !            66:                buffer_copy_string(s, rmtmask[i].string);
        !            67:                slash = strchr(s->ptr,'/'); assert(slash);
        !            68:                m = config_addrbuf_eq_remote_ip_mask(NULL, s, slash, &rmt);
        !            69:                if (m != rmtmask[i].expect) {
        !            70:                        fprintf(stderr, "failed assertion: %s %s %s\n",
        !            71:                                rmtmask[i].string,
        !            72:                                rmtmask[i].expect ? "==" : "!=",
        !            73:                                rmtmask[i].rmtstr);
        !            74:                        exit(-1);
        !            75:                }
        !            76:        }
        !            77: 
        !            78:        buffer_free(s);
        !            79: }
        !            80: 
        !            81: int main (void) {
        !            82:        test_configfile_addrbuf_eq_remote_ip_mask();
        !            83: 
        !            84:        return 0;
        !            85: }
        !            86: 
        !            87: /*
        !            88:  * stub functions (for linking)
        !            89:  */
        !            90: void fd_close_on_exec(int fd) { UNUSED(fd); }

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