📄 print-radius.c
字号:
"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 + -