⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file.c

📁 第二层隧道模块l2tp源码,开发环境为linux
💻 C
📖 第 1 页 / 共 3 页
字号:
        return -1;    }    return 0;}int set_authname (char *word, char *value, int context, void *item){    struct lac *l = (struct lac *) item;    struct lns *n = (struct lns *) item;    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        if (set_string (word, value, n->authname, sizeof (n->authname)))            return -1;        break;    case CONTEXT_LAC:        if (set_string (word, value, l->authname, sizeof (l->authname)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_hostname (char *word, char *value, int context, void *item){    struct lac *l = (struct lac *) item;    struct lns *n = (struct lns *) item;    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        if (set_string (word, value, n->hostname, sizeof (n->hostname)))            return -1;        break;    case CONTEXT_LAC:        if (set_string (word, value, l->hostname, sizeof (l->hostname)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_passwdauth (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        if (set_boolean (word, value, &(((struct lns *) item)->passwdauth)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_hbit (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LAC:        if (set_boolean (word, value, &(((struct lac *) item)->hbit)))            return -1;        break;    case CONTEXT_LNS:        if (set_boolean (word, value, &(((struct lns *) item)->hbit)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_challenge (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LAC:        if (set_boolean (word, value, &(((struct lac *) item)->challenge)))            return -1;        break;    case CONTEXT_LNS:        if (set_boolean (word, value, &(((struct lns *) item)->challenge)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_lbit (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LAC:        if (set_boolean (word, value, &(((struct lac *) item)->lbit)))            return -1;        break;    case CONTEXT_LNS:        if (set_boolean (word, value, &(((struct lns *) item)->lbit)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_debug (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LAC:        if (set_boolean (word, value, &(((struct lac *) item)->debug)))            return -1;        break;    case CONTEXT_LNS:        if (set_boolean (word, value, &(((struct lns *) item)->debug)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_pppoptfile (char *word, char *value, int context, void *item){    struct lac *l = (struct lac *) item;    struct lns *n = (struct lns *) item;    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        if (set_string (word, value, n->pppoptfile, sizeof (n->pppoptfile)))            return -1;        break;    case CONTEXT_LAC:        if (set_string (word, value, l->pppoptfile, sizeof (l->pppoptfile)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_papchap (char *word, char *value, int context, void *item){    int result;    char *c;    struct lac *l = (struct lac *) item;    struct lns *n = (struct lns *) item;    if (set_boolean (word, value, &result))        return -1;    c = strchr (word, ' ');    c++;    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LAC:        if (c[0] == 'p')        /* PAP */            if (word[2] == 'f')                l->pap_refuse = result;            else                l->pap_require = result;        else if (c[0] == 'a')   /* Authentication */            if (word[2] == 'f')                l->authself = result;            else                l->authpeer = result;        else /* CHAP */ if (word[2] == 'f')            l->chap_refuse = result;        else            l->chap_require = result;        break;    case CONTEXT_LNS:        if (c[0] == 'p')        /* PAP */            if (word[2] == 'f')                n->pap_refuse = result;            else                n->pap_require = result;        else if (c[0] == 'a')   /* Authentication */            if (word[2] == 'f')                n->authself = !result;            else                n->authpeer = result;        else /* CHAP */ if (word[2] == 'f')            n->chap_refuse = result;        else            n->chap_require = result;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_redial (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LAC:        if (set_boolean (word, value, &(((struct lac *) item)->redial)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_accesscontrol (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_GLOBAL:        if (set_boolean            (word, value, &(((struct global *) item)->accesscontrol)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_userspace (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_GLOBAL:        if (set_boolean            (word, value, &(((struct global *) item)->forceuserspace)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}struct iprange *set_range (char *word, char *value, struct iprange *in){    char *c, *d = NULL;    struct iprange *ipr, *p;    struct hostent *hp;    c = strchr (value, '-');    if (c)    {        d = c + 1;        *c = 0;        while ((c >= value) && (*c < 33))            *(c--) = 0;        while (*d && (*d < 33))            d++;    }    if (!strlen (value) || (c && !strlen (d)))    {        snprintf (filerr, sizeof (filerr),                  "format is '%s <host or ip> - <host or ip>'\n", word);        return NULL;    }    ipr = (struct iprange *) malloc (sizeof (struct iprange));    ipr->next = NULL;    hp = gethostbyname (value);    if (!hp)    {        snprintf (filerr, sizeof (filerr), "Unknown host %s\n", value);        free (ipr);        return NULL;    }    bcopy (hp->h_addr, &ipr->start, sizeof (unsigned int));    if (c)    {        hp = gethostbyname (d);        if (!hp)        {            snprintf (filerr, sizeof (filerr), "Unknown host %s\n", d);            free (ipr);            return NULL;        }        bcopy (hp->h_addr, &ipr->end, sizeof (unsigned int));    }    else        ipr->end = ipr->start;    if (ntohl (ipr->start) > ntohl (ipr->end))    {        snprintf (filerr, sizeof (filerr), "start is greater than end!\n");        free (ipr);        return NULL;    }    if (word[0] == 'n')        ipr->sense = SENSE_DENY;    else        ipr->sense = SENSE_ALLOW;    p = in;    if (p)    {        while (p->next)            p = p->next;        p->next = ipr;        return in;    }    else        return ipr;}int set_iprange (char *word, char *value, int context, void *item){    struct lns *lns = (struct lns *) item;    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    lns->range = set_range (word, value, lns->range);    if (!lns->range)        return -1;#ifdef DEBUG_FILE    log (LOG_DEBUG, "range start = %x, end = %x, sense=%ud\n",         ntohl (ipr->start), ntohl (ipr->end), ipr->sense);#endif    return 0;}int set_lac (char *word, char *value, int context, void *item){    struct lns *lns = (struct lns *) item;    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    lns->lacs = set_range (word, value, lns->lacs);    if (!lns->lacs)        return -1;#ifdef DEBUG_FILE    log (LOG_DEBUG, "lac start = %x, end = %x, sense=%ud\n",         ntohl (ipr->start), ntohl (ipr->end), ipr->sense);#endif    return 0;}int set_exclusive (char *word, char *value, int context, void *item){    switch (context & ~CONTEXT_DEFAULT)    {    case CONTEXT_LNS:        if (set_boolean (word, value, &(((struct lns *) item)->exclusive)))            return -1;        break;    default:        snprintf (filerr, sizeof (filerr), "'%s' not valid in this context\n",                  word);        return -1;    }    return 0;}int set_ip (char *word, char *value, unsigned int *addr){    struct hostent *hp;    hp = gethostbyname (value);    if (!hp)    {        snprintf (filerr, sizeof (filerr), "%s: host '%s' not found\n",                  __FUNCTION__, value);        return -1;    }    bcopy (hp->h_addr, addr, sizeof (unsigned int));    return 0;}int set_localaddr (char *word, char *value, int context, void *item){    struct lac *l;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -