Add support for setting the CoS for VLAN traffic (802.1p) in Linux. The
[asterisk/asterisk.git] / main / acl.c
index e2caa2e..55654f7 100644 (file)
@@ -212,7 +212,8 @@ int ast_apply_ha(struct ast_ha *ha, struct sockaddr_in *sin)
                /* DEBUG */
                ast_copy_string(iabuf, ast_inet_ntoa(sin->sin_addr), sizeof(iabuf));
                ast_copy_string(iabuf2, ast_inet_ntoa(ha->netaddr), sizeof(iabuf2));
-               ast_log(LOG_DEBUG, "##### Testing %s with %s\n", iabuf, iabuf2);
+               if (option_debug)
+                       ast_log(LOG_DEBUG, "##### Testing %s with %s\n", iabuf, iabuf2);
                /* For each rule, if this address and the netmask = the net address
                   apply the current rule */
                if ((sin->sin_addr.s_addr & ha->netmask.s_addr) == ha->netaddr.s_addr)
@@ -229,8 +230,6 @@ int ast_get_ip_or_srv(struct sockaddr_in *sin, const char *value, const char *se
        char srv[256];
        char host[256];
        int tportno = ntohs(sin->sin_port);
-       if (inet_aton(value, &sin->sin_addr))
-               return 0;
        if (service) {
                snprintf(srv, sizeof(srv), "%s.%s", service, value);
                if (ast_get_srv(NULL, host, sizeof(host), &tportno, srv) > 0) {
@@ -279,6 +278,20 @@ static const struct dscp_codepoint dscp_pool1[] = {
        { "EF", 0x2E },
 };
 
+int ast_str2cos(const char *value, unsigned int *cos) 
+{
+       int fval;
+       
+       if (sscanf(value, "%d", &fval) == 1) {
+               if (fval < 8) {
+                   *cos = fval;
+                   return 0;
+               }
+       }
+       
+       return -1;
+}
+
 int ast_str2tos(const char *value, unsigned int *tos)
 {
        int fval;