mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-29 23:39:35 +00:00 
			
		
		
		
	Allow /x for subnetmask identification (e.g. 192.168.0.0/16)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										19
									
								
								acl.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								acl.c
									
									
									
									
									
								
							| @@ -72,6 +72,8 @@ struct ast_ha *ast_append_ha(char *sense, char *stuff, struct ast_ha *path) | |||||||
| 	char tmp[256] = ""; | 	char tmp[256] = ""; | ||||||
| 	struct ast_ha *prev = NULL; | 	struct ast_ha *prev = NULL; | ||||||
| 	struct ast_ha *ret; | 	struct ast_ha *ret; | ||||||
|  | 	int x,z; | ||||||
|  | 	unsigned int y; | ||||||
| 	ret = path; | 	ret = path; | ||||||
| 	while(path) { | 	while(path) { | ||||||
| 		prev = path; | 		prev = path; | ||||||
| @@ -86,13 +88,22 @@ struct ast_ha *ast_append_ha(char *sense, char *stuff, struct ast_ha *path) | |||||||
| 			*nm = '\0'; | 			*nm = '\0'; | ||||||
| 			nm++; | 			nm++; | ||||||
| 		} | 		} | ||||||
| 		if (!inet_aton(tmp, &ha->netaddr)) { | 		if (!strchr(nm, '.')) { | ||||||
| 			ast_log(LOG_WARNING, "%s not a valid IP\n", tmp); | 			if ((sscanf(nm, "%i", &x) == 1) && (x >= 0) && (x <= 32)) { | ||||||
|  | 				y = 0; | ||||||
|  | 				for (z=0;z<x;z++) { | ||||||
|  | 					y >>= 1; | ||||||
|  | 					y |= 0x8000000; | ||||||
|  | 				} | ||||||
|  | 				ha->netmask.s_addr = htonl(y); | ||||||
|  | 			} | ||||||
|  | 		} else if (!inet_aton(nm, &ha->netmask)) { | ||||||
|  | 			ast_log(LOG_WARNING, "%s not a valid netmask\n", nm); | ||||||
| 			free(ha); | 			free(ha); | ||||||
| 			return path; | 			return path; | ||||||
| 		} | 		} | ||||||
| 		if (!inet_aton(nm, &ha->netmask)) { | 		if (!inet_aton(tmp, &ha->netaddr)) { | ||||||
| 			ast_log(LOG_WARNING, "%s not a valid netmask\n", nm); | 			ast_log(LOG_WARNING, "%s not a valid IP\n", tmp); | ||||||
| 			free(ha); | 			free(ha); | ||||||
| 			return path; | 			return path; | ||||||
| 		} | 		} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user