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

📄 print-radius.c

📁 TCPDUMP的C语言源代码,是在数据链路层的应用
💻 C
📖 第 1 页 / 共 3 页
字号:
                                     "F.69",                                     "X.121",                                     "IPX",                                     "Appletalk",                                     "Decnet IV",                                     "Banyan Vines",                                     "E.164 with NSAP subaddress",                                   };/* ARAP-Zone-Access Attribute standard values */static const char *arap_zone[]={ NULL,                                 "Only access to dfl zone",                                 "Use zone filter inc.",                                 "Not used",                                 "Use zone filter exc.",                               };static const char *prompt[]={ "No Echo",                              "Echo",                            };struct attrtype { const char *name;      /* Attribute name                 */                  const char **subtypes; /* Standard Values (if any)       */                  u_char siz_subtypes;   /* Size of total standard values  */                  u_char first_subtype;  /* First standard value is 0 or 1 */                  void (*print_func)(register u_char *, u_int, u_short );                } attr_type[]=  {     { NULL,                              NULL, 0, 0, NULL               },     { "Username",                        NULL, 0, 0, print_attr_string  },     { "Password",                        NULL, 0, 0, NULL               },     { "CHAP Password",                   NULL, 0, 0, NULL               },     { "NAS IP Address",                  NULL, 0, 0, print_attr_address },     { "NAS Port",                        NULL, 0, 0, print_attr_num     },     { "Service Type",                    serv_type, TAM_SIZE(serv_type)-1, 1, print_attr_num },     { "Framed Protocol",                 frm_proto, TAM_SIZE(frm_proto)-1, 1, print_attr_num },     { "Framed IP Address",               NULL, 0, 0, print_attr_address },     { "Framed IP Network",               NULL, 0, 0, print_attr_address },     { "Framed Routing",                  frm_routing, TAM_SIZE(frm_routing), 0, print_attr_num },     { "Filter ID",                       NULL, 0, 0, print_attr_string  },     { "Framed MTU",                      NULL, 0, 0, print_attr_num     },     { "Framed Compression",              frm_comp, TAM_SIZE(frm_comp),   0, print_attr_num },     { "Login IP Host",                   NULL, 0, 0, print_attr_address },     { "Login Service",                   login_serv, TAM_SIZE(login_serv), 0, print_attr_num },     { "Login TCP Port",                  NULL, 0, 0, print_attr_num     },     { "Unassigned",                      NULL, 0, 0, NULL }, /*17*/     { "Reply",                           NULL, 0, 0, print_attr_string },     { "Callback-number",                 NULL, 0, 0, print_attr_string },     { "Callback-ID",                     NULL, 0, 0, print_attr_string },     { "Unassigned",                      NULL, 0, 0, NULL }, /*21*/     { "Framed Route",                    NULL, 0, 0, print_attr_string },     { "Framed IPX Network",              NULL, 0, 0, print_attr_num    },     { "State",                           NULL, 0, 0, print_attr_string },     { "Class",                           NULL, 0, 0, print_attr_string },     { "Vendor Specific",                 NULL, 0, 0, print_vendor_attr },     { "Session Timeout",                 NULL, 0, 0, print_attr_num    },     { "Idle Timeout",                    NULL, 0, 0, print_attr_num    },     { "Termination Action",              term_action, TAM_SIZE(term_action), 0, print_attr_num },     { "Called Station",                  NULL, 0, 0, print_attr_string },     { "Calling Station",                 NULL, 0, 0, print_attr_string },     { "NAS ID",                          NULL, 0, 0, print_attr_string },     { "Proxy State",                     NULL, 0, 0, print_attr_string },     { "Login LAT Service",               NULL, 0, 0, print_attr_string },     { "Login LAT Node",                  NULL, 0, 0, print_attr_string },     { "Login LAT Group",                 NULL, 0, 0, print_attr_string },     { "Framed Appletalk Link",           NULL, 0, 0, print_attr_num    },     { "Framed Appltalk Net",             NULL, 0, 0, print_attr_num    },     { "Framed Appletalk Zone",           NULL, 0, 0, print_attr_string },     { "Accounting Status",               acct_status, TAM_SIZE(acct_status)-1, 1, print_attr_num },     { "Accounting Delay",                NULL, 0, 0, print_attr_num    },     { "Accounting Input Octets",         NULL, 0, 0, print_attr_num    },     { "Accounting Output Octets",        NULL, 0, 0, print_attr_num    },     { "Accounting Session ID",           NULL, 0, 0, print_attr_string },     { "Accounting Authentication",       acct_auth, TAM_SIZE(acct_auth)-1, 1, print_attr_num },     { "Accounting Session Time",         NULL, 0, 0, print_attr_num },     { "Accounting Input Packets",        NULL, 0, 0, print_attr_num },     { "Accounting Output Packets",       NULL, 0, 0, print_attr_num },     { "Accounting Termination Cause",    acct_term, TAM_SIZE(acct_term)-1, 1, print_attr_num },     { "Accounting Multilink Session ID", NULL, 0, 0, print_attr_string },     { "Accounting Link Count",           NULL, 0, 0, print_attr_num },     { "Accounting Input Giga",           NULL, 0, 0, print_attr_num },     { "Accounting Output Giga",          NULL, 0, 0, print_attr_num },     { "Unassigned",                      NULL, 0, 0, NULL }, /*54*/     { "Event Timestamp",                 NULL, 0, 0, print_attr_time },     { "Unassigned",                      NULL, 0, 0, NULL }, /*56*/     { "Unassigned",                      NULL, 0, 0, NULL }, /*57*/     { "Unassigned",                      NULL, 0, 0, NULL }, /*58*/     { "Unassigned",                      NULL, 0, 0, NULL }, /*59*/     { "CHAP challenge",                  NULL, 0, 0, print_attr_string },     { "NAS Port Type",                   nas_port_type, TAM_SIZE(nas_port_type), 0, print_attr_num },     { "Port Limit",                      NULL, 0, 0, print_attr_num },     { "Login LAT Port",                  NULL, 0, 0, print_attr_string }, /*63*/     { "Tunnel Type",                     tunnel_type, TAM_SIZE(tunnel_type)-1, 1, print_attr_num },     { "Tunnel Medium",                   tunnel_medium, TAM_SIZE(tunnel_medium)-1, 1, print_attr_num },     { "Tunnel Client End",               NULL, 0, 0, print_attr_string },     { "Tunnel Server End",               NULL, 0, 0, print_attr_string },     { "Accounting Tunnel connect",       NULL, 0, 0, print_attr_string },     { "Tunnel Password",                 NULL, 0, 0, print_attr_string  },     { "ARAP Password",                   NULL, 0, 0, print_attr_strange },     { "ARAP Feature",                    NULL, 0, 0, print_attr_strange },     { "ARAP Zone Acces",                 arap_zone, TAM_SIZE(arap_zone)-1, 1, print_attr_num }, /*72*/     { "ARAP Security",                   NULL, 0, 0, print_attr_string },     { "ARAP Security Data",              NULL, 0, 0, print_attr_string },     { "Password Retry",                  NULL, 0, 0, print_attr_num    },     { "Prompt",                          prompt, TAM_SIZE(prompt), 0, print_attr_num },     { "Connect Info",                    NULL, 0, 0, print_attr_string   },     { "Config Token",                    NULL, 0, 0, print_attr_string   },     { "EAP Message",                     NULL, 0, 0, print_attr_string   },     { "Message Authentication",          NULL, 0, 0, print_attr_string }, /*80*/     { "Tunnel Private Group",            NULL, 0, 0, print_attr_string },     { "Tunnel Assigned ID",              NULL, 0, 0, print_attr_string },     { "Tunnel Preference",               NULL, 0, 0, print_attr_num    },     { "ARAP Challenge Response",         NULL, 0, 0, print_attr_strange },     { "Accounting Interim Interval",     NULL, 0, 0, print_attr_num     },     { "Accounting Tunnel packets lost",  NULL, 0, 0, print_attr_num }, /*86*/     { "NAS Port ID",                     NULL, 0, 0, print_attr_string },     { "Framed Pool",                     NULL, 0, 0, print_attr_string },     { "Unassigned",                      NULL, 0, 0, NULL },     { "Tunnel Client Authentication ID", NULL, 0, 0, print_attr_string },     { "Tunnel Server Authentication ID", NULL, 0, 0, print_attr_string },     { "Unassigned",                      NULL, 0, 0, NULL }, /*92*/     { "Unassigned",                      NULL, 0, 0, NULL }  /*93*/  };/*****************************//* Print an attribute string *//* value pointed by 'data'   *//* and 'length' size.        *//*****************************//* Returns nothing.          *//*****************************/static voidprint_attr_string(register u_char *data, u_int length, u_short attr_code ){   register u_int i;   TCHECK2(data[0],length);   switch(attr_code)   {      case TUNNEL_PASS:           if (length < 3)           {              printf(" [|radius]");              return;           }           if (*data && (*data <=0x1F) )              printf("Tag %u, ",*data);           data++;           length--;           printf("Salt %u ",EXTRACT_16BITS(data) );           data+=2;           length-=2;        break;      case TUNNEL_CLIENT_END:      case TUNNEL_SERVER_END:      case TUNNEL_PRIV_GROUP:      case TUNNEL_ASSIGN_ID:      case TUNNEL_CLIENT_AUTH:      case TUNNEL_SERVER_AUTH:           if (*data <= 0x1F)           {              if (length < 1)              {                 printf(" [|radius]");                 return;              }              printf("Tag %u",*data);              data++;              length--;           }        break;   }   for (i=0; *data && i < length ; i++, data++)       printf("%c",(*data < 32 || *data > 128) ? '.' : *data );   return;   trunc:      printf(" [|radius]");}/* * print vendor specific attributes */static voidprint_vendor_attr(register u_char *data, u_int length, u_short attr_code _U_){    u_int idx;    u_int vendor_id;    u_int vendor_type;    u_int vendor_length;    if (length < 4)        goto trunc;    TCHECK2(*data, 4);    vendor_id = EXTRACT_32BITS(data);    data+=4;    length-=4;    printf("Vendor: %s (%u)",           tok2str(smi_values,"Unknown",vendor_id),           vendor_id);    while (length >= 2) {	TCHECK2(*data, 2);        vendor_type = *(data);        vendor_length = *(data+1);        if (vendor_length < 2)        {            printf("\n\t    Vendor Attribute: %u, Length: %u (bogus, must be >= 2)",                   vendor_type,                   vendor_length);            return;        }        if (vendor_length > length)        {            printf("\n\t    Vendor Attribute: %u, Length: %u (bogus, goes past end of vendor-specific attribute)",                   vendor_type,                   vendor_length);            return;        }        data+=2;        vendor_length-=2;        length-=2;	TCHECK2(*data, vendor_length);        printf("\n\t    Vendor Attribute: %u, Length: %u, Value: ",               vendor_type,               vendor_length);        for (idx = 0; idx < vendor_length ; idx++, data++)            printf("%c",(*data < 32 || *data > 128) ? '.' : *data );        length-=vendor_length;    }    return;   trunc:     printf(" [|radius]");}/******************************//* Print an attribute numeric *//* value pointed by 'data'    *//* and 'length' size.         *//******************************//* Returns nothing.           *//******************************/static voidprint_attr_num(register u_char *data, u_int length, u_short attr_code ){   u_int8_t tag;   u_int32_t timeout;   if (length != 4)   {       printf("ERROR: length %u != 4", length);       return;   }   TCHECK2(data[0],4);                          /* This attribute has standard values */   if (attr_type[attr_code].siz_subtypes)   {      static const char **table;      u_int32_t data_value;      table = attr_type[attr_code].subtypes;      if ( (attr_code == TUNNEL_TYPE) || (attr_code == TUNNEL_MEDIUM) )      {         if (!*data)            printf("Tag[Unused]");         else            printf("Tag[%d]", *data);         data++;         data_value = EXTRACT_24BITS(data);      }      else      {         data_value = EXTRACT_32BITS(data);      }      if ( data_value <= (u_int32_t)(attr_type[attr_code].siz_subtypes - 1 +            attr_type[attr_code].first_subtype) &&	   data_value >= attr_type[attr_code].first_subtype )         printf("%s",table[data_value]);      else         printf("#%u",data_value);   }   else   {      switch(attr_code) /* Be aware of special cases... */      {        case FRM_IPX:             if (EXTRACT_32BITS( data) == 0xFFFFFFFE )                printf("NAS Select");             else                printf("%d",EXTRACT_32BITS( data) );          break;        case SESSION_TIMEOUT:        case IDLE_TIMEOUT:        case ACCT_DELAY:        case ACCT_SESSION_TIME:        case ACCT_INT_INTERVAL:             timeout = EXTRACT_32BITS( data);             if ( timeout < 60 )

⌨️ 快捷键说明

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