[Openvas-devel] [Openvas-commits] r4634 - in trunk/openvas-server: . openvasd
Felix Wolfsteller
felix.wolfsteller at intevation.de
Thu Aug 20 11:39:41 CEST 2009
I have seen that in places just the formatting was improved - much
appreciated, but
please respect the GNU Coding Style
(http://openvas.org/compendium/source-code-style-guide.html).
Don't get me wrong, looks fine and tidy compared to what there was, but it
would be great if we would have a consistent formatting of the code in the
(near) future.
Thanks,
-- Felix
PS: What i was missing:
* space before opening bracket
* block indentation
* return type in own line
On Thursday 20 August 2009 11:20:33 scm-commit at wald.intevation.org wrote:
> Author: jan
> Date: 2009-08-20 11:20:32 +0200 (Thu, 20 Aug 2009)
> New Revision: 4634
>
> Modified:
> trunk/openvas-server/ChangeLog
> trunk/openvas-server/openvasd/attack.c
> trunk/openvas-server/openvasd/rules.c
> trunk/openvas-server/openvasd/rules.h
> Log:
> Initializing implementation for IPv6 support.
> This corresponds to Change Request #27,
> http://www.openvas.org/openvas-cr-27.html
> Most work done by Srinivasa NL <nl.srinivas at gmail.com>.
>
> * openvasd/rules.h: Added type "inaddrs_t" as union to hold
> either IPv6 or IPv4 address.
> (struct openvas_rules): Adapted to above and added family.
> Adpated protos according to new type.
>
> * openvasd/rules.c (rules_validateandgetipaddr, rules_ipv6addrmask): New.
> (rules_init_aux): Mostly rewritten to support IPv6 addresses.
> (rules_dup_aux, rules_dup): Removed. These functions are never used.
> (rules_set_client_ip): API changed (family added). Now supports IPv6.
> (rules_add): Added support of IPv6.
> (rules_dump): Added support of IPv6.
> (get_host_rules): Removed recursion decision. Added support of IPv6.
>
> * openvasd/attack.c (attack_network): Adapt to new API for considerung
> also IPv6 addesses when checking for access rules.
>
>
>
> Modified: trunk/openvas-server/ChangeLog
> ===================================================================
> --- trunk/openvas-server/ChangeLog 2009-08-20 09:02:13 UTC (rev 4633)
> +++ trunk/openvas-server/ChangeLog 2009-08-20 09:20:32 UTC (rev 4634)
> @@ -1,3 +1,30 @@
> +2009-08-20 Jan-Oliver Wagner <jan-oliver.wagner at greenbone.net>
> +
> + Initializing implementation for IPv6 support.
> + This corresponds to Change Request #27,
> + http://www.openvas.org/openvas-cr-27.html
> + Most work done by Srinivasa NL <nl.srinivas at gmail.com>.
> +
> + * openvasd/rules.h: Added type "inaddrs_t" as union to hold
> + either IPv6 or IPv4 address.
> + (struct openvas_rules): Adapted to above and added family.
> + Adpated protos according to new type.
> +
> + * openvasd/rules.c (rules_validateandgetipaddr, rules_ipv6addrmask): New.
> + (rules_init_aux): Mostly rewritten to support IPv6 addresses.
> + (rules_dup_aux, rules_dup): Removed. These functions are never used.
> + (rules_set_client_ip): API changed (family added). Now supports IPv6.
> + (rules_add): Added support of IPv6.
> + (rules_dump): Added support of IPv6.
> + (get_host_rules): Removed recursion decision. Added support of IPv6.
> +
> + * openvasd/attack.c (attack_network): Adapt to new API for considerung
> + also IPv6 addesses when checking for access rules.
> +
> +2009-08-10 Vlatko Kosturjak <kost at linux.hr>
> +
> + * cnvts/3com_hub/Makefile, cnvts/3com_hub/3com_hub.c:
> +
> 2009-08-19 Tim Brown <timb at nth-dimension.org.uk>
>
> * openvas-adduser.in, openvas-rmuser.in: Fixed bashism.
>
> Modified: trunk/openvas-server/openvasd/attack.c
> ===================================================================
> --- trunk/openvas-server/openvasd/attack.c 2009-08-20 09:02:13 UTC (rev
> 4633) +++ trunk/openvas-server/openvasd/attack.c 2009-08-20 09:20:32 UTC
> (rev 4634) @@ -721,6 +721,7 @@
> hargwalk * hw;
> char * key;
> struct timeval then, now;
> + inaddrs_t addrs;
>
> gettimeofday(&then, NULL);
>
> @@ -861,8 +862,11 @@
> }
>
> host_pending = 0 ;
> +
> + addrs.ip.s_addr = host_ip.s_addr;
> +
> /* Do we have the right to test this host ? */
> - if(CAN_TEST(get_host_rules(rules, host_ip,32)) == 0)
> + if(CAN_TEST(get_host_rules(rules, addrs)) == 0)
> {
> log_write("user %s : rejected attempt to scan %s",
> attack_user_name(globals), hostname);
>
> Modified: trunk/openvas-server/openvasd/rules.c
> ===================================================================
> --- trunk/openvas-server/openvasd/rules.c 2009-08-20 09:02:13 UTC (rev
> 4633) +++ trunk/openvas-server/openvasd/rules.c 2009-08-20 09:20:32 UTC
> (rev 4634) @@ -35,6 +35,86 @@
> #include "rules.h"
> #include "log.h"
>
> +static int rules_validateandgetipaddr(char *ip, int family, struct
> sockaddr *sa, int numeric) +{
> + struct addrinfo hints;
> + struct addrinfo *ai;
> + int retval;
> +
> + memset(&hints, 0, sizeof(hints));
> + switch(family)
> + {
> + case AF_INET:
> + hints.ai_family = AF_INET;
> + break;
> + case AF_INET6:
> + hints.ai_family = AF_INET6;
> + break;
> + default:
> + return -1;
> + }
> + if(numeric)
> + hints.ai_flags = AI_NUMERICHOST;
> +
> + retval = getaddrinfo(ip, NULL, &hints, &ai);
> + if(!retval)
> + {
> + if(family == AF_INET)
> + {
> + memcpy(sa, ai->ai_addr, sizeof(struct sockaddr_in));
> + }
> + else
> + {
> + memcpy(sa, &((struct sockaddr_in6 *)(ai->ai_addr))->sin6_addr,
> sizeof(struct sockaddr_in6)); + }
> + freeaddrinfo(ai);
> + return 0;
> + }
> + return -1;
> +}
> +
> +static void rules_ipv6addrmask(struct in6_addr *in6addr, int mask)
> +{
> + int wordmask;
> + int word;
> + uint32_t *ptr;
> + uint32_t addr;
> +
> + word = mask / 32;
> + wordmask = mask % 32;
> + ptr = (uint32_t *)in6addr;
> + switch(word)
> + {
> + case 0:
> + ptr[1] = ptr[2] = ptr[3] = 0;
> + addr = ptr[0];
> + addr = ntohl(addr) >> (32 - wordmask);
> + addr = htonl(addr << (32 - wordmask));
> + ptr[0] = addr;
> + break;
> + case 1:
> + ptr[2] = ptr[3] = 0;
> + addr = ptr[1];
> + addr = ntohl(addr) >> (32 - wordmask);
> + addr = htonl(addr << (32 - wordmask));
> + ptr[1] = addr;
> + break;
> + case 2:
> + ptr[3] = 0;
> + addr = ptr[2];
> + addr = ntohl(addr) >> (32 - wordmask);
> + addr = htonl(addr << (32 - wordmask));
> + ptr[2] = addr;
> + break;
> + case 3:
> + addr = ptr[3];
> + addr = ntohl(addr) >> (32 - wordmask);
> + addr = htonl(addr << (32 - wordmask));
> + ptr[3] = addr;
> + break;
> + }
> +}
> +
> /**
> * @brief Returns the name of the rules file.
> *
> @@ -74,99 +154,137 @@
> }
>
>
> -int rules_init_aux(rules,file, buffer, len,def)
> - struct openvas_rules * rules;
> - FILE * file;
> - char * buffer;
> - int len;
> - int def;
> +int rules_init_aux(struct openvas_rules * rules, FILE * file,
> + char * buffer, int len, int def)
> {
> - buffer[0] = buffer[len - 1 ] = '\0';
> -
> - if(!(fgets(buffer, len - 1, file))){
> - rules->next = NULL;
> - return def;
> - }
> - else {
> - char *t = buffer;
> - char *v;
> - int t_len;
> - if(t[strlen(t)-1]=='\n')t[strlen(t)-1]='\0';
> - while((t[0]==' ')||(t[0]=='\t'))t++;
> - if((t[0]=='#')||t[0] == '\0')return rules_init_aux(rules,file, buffer,
> len,def); - v = strchr(t, ' ');
> - if( v == NULL ){
> - printf("Parse error in the rules file : %s\n",
> - buffer);
> - return rules_init_aux(rules, file, buffer, len, def);
> - }
> - else
> - {
> - if(!strncmp(t, "accept", 6))
> - rules->rule = RULES_ACCEPT;
> - else if(!strncmp(t, "default", 7)){
> - if(!strncmp(t+8, "accept", 6))def = RULES_ACCEPT;
> - else def = RULES_REJECT;
> - return rules_init_aux(rules, file, buffer, len, def);
> - }
> - else if((!strncmp(t, "reject", 6))||
> - (!strncmp(t, "deny", 4)))rules->rule = RULES_REJECT;
> - else {
> - printf("Parse error in the rules file : %s\n",
> - buffer);
> - return rules_init_aux(rules, file, buffer, len,def);
> - }
> - t = v+sizeof(char);
> - v = strchr(t, '/');
> - if(v)v[0]='\0';
> - if(t[0]=='!'){
> - rules->not = 1;
> - t++;
> - }
> - else rules->not = 0;
> - t_len = strlen(t);
> - while(t[t_len-1]==' ')
> - {
> - t[t_len-1]='\0';
> - t_len --;
> - }
> - if(!(inet_aton(t,&rules->ip)))
> - {
> - if(strcmp(t, "client_ip"))
> - {
> - printf("Parse error in the rules file : '%s' is not a valid IP\n",
> - t);
> - return rules_init_aux(rules, file, buffer, len,def);
> - }
> - else
> - {
> - rules->ip.s_addr = -1;
> - rules->client_ip = 1;
> - }
> - }
> - else rules->client_ip = 0;
> -
> - if(v)rules->mask = atoi(v+sizeof(char));
> - else rules->mask = 32;
> - if(rules->mask < 0 || rules->mask > 32)
> - {
> - printf("Error in the rules file. %s is not a valid cidr netmask\n",
> - v+sizeof(char));
> - EXIT(1);
> + struct sockaddr_in saddr;
> + struct sockaddr_in6 s6addr;
>
> - }
> - if(rules->mask > 0)
> - {
> - rules->ip.s_addr = ntohl(rules->ip.s_addr) >> (32 - rules->mask);
> - rules->ip.s_addr = htonl(rules->ip.s_addr << (32 - rules->mask));
> - }
> - else rules->ip.s_addr = 0;
> - rules->next = emalloc(sizeof(*rules));
> - }
> - }
> - return rules_init_aux(rules->next, file, buffer, len, def);
> + while(1)
> + {
> + buffer[0] = buffer[len - 1 ] = '\0';
> + if(!(fgets(buffer, len - 1, file)))
> + {
> + rules->next = NULL;
> + return def;
> + }
> + else
> + {
> + char *t = buffer;
> + char *v;
> + int t_len;
> + if(t[strlen(t)-1]=='\n')t[strlen(t)-1]='\0';
> + while((t[0]==' ')||(t[0]=='\t'))t++;
> + if((t[0]=='#')||t[0] == '\0')
> + continue;
> + v = strchr(t, ' ');
> + if( v == NULL ){
> + printf("Parse error in the rules file : %s\n",
> + buffer);
> + continue;
> + }
> + else
> + {
> + if(!strncmp(t, "accept", 6))
> + rules->rule = RULES_ACCEPT;
> + else if(!strncmp(t, "default", 7)){
> + if(!strncmp(t+8, "accept", 6))def = RULES_ACCEPT;
> + else def = RULES_REJECT;
> + continue;
> + }
> + else if((!strncmp(t, "reject", 6))||
> + (!strncmp(t, "deny", 4)))rules->rule = RULES_REJECT;
> + else {
> + printf("Parse error in the rules file : %s\n",
> + buffer);
> + continue;
> + }
> + t = v+sizeof(char);
> + v = strchr(t, '/');
> + if(v)v[0]='\0';
> + if(t[0]=='!'){
> + rules->not = 1;
> + t++;
> + }
> + else rules->not = 0;
> + t_len = strlen(t);
> + while(t[t_len-1]==' ')
> + {
> + t[t_len-1]='\0';
> + t_len --;
> + }
> +
> + if(!rules_validateandgetipaddr(t, AF_INET, (struct sockaddr
> *)&saddr ,1)) + {
> + rules->inaddrs.ip.s_addr = saddr.sin_addr.s_addr;
> + rules->family = AF_INET;
> + rules->client_ip = 0;
> + }
> + else if(!rules_validateandgetipaddr(t, AF_INET6, (struct sockaddr
> *)&s6addr ,1)) + {
> + memcpy(&rules->inaddrs.ip6, &s6addr, sizeof(struct
> sockaddr_in6)); + rules->family = AF_INET6;
> + rules->client_ip = 0;
> + }
> + else
> + {
> + if(strcmp(t, "client_ip"))
> + {
> + printf("Parse error in the rules file : '%s' is not a valid
> IP\n", + t);
> + continue;
> + }
> + else
> + {
> + rules->client_ip = 1;
> + }
> + }
> +
> + if(v)
> + rules->mask = atoi(v+sizeof(char));
> + else
> + rules->mask = rules->family == AF_INET ? 32 : 128;
> +
> + if(rules->family == AF_INET)
> + {
> + if(rules->mask < 0 || rules->mask > 32)
> + {
> + printf("Error in the rules file. %s is not a valid cidr
> netmask\n", + v+sizeof(char));
> + EXIT(1);
> + }
> + if(rules->mask > 0)
> + {
> + rules->inaddrs.ip.s_addr = ntohl(rules->inaddrs.ip.s_addr) >>
> (32 - rules->mask); + rules->inaddrs.ip.s_addr =
> htonl(rules->inaddrs.ip.s_addr << (32 - rules->mask));
> ; +
> }
> + else
> + rules->inaddrs.ip.s_addr = 0;
> + }
> + else
> + {
> + if(rules->mask < 0 || rules->mask > 128)
> + {
> + printf("Error in the rules file. %s is not a valid cidr
> netmask\n", + v+sizeof(char));
> + EXIT(1);
> + }
> + if(rules->mask > 0)
> + rules_ipv6addrmask(&rules->inaddrs.ip6, rules->mask);
> + else
> + {
> + rules->inaddrs.ip6.s6_addr32[0] = 0;
> + rules->inaddrs.ip6.s6_addr32[1] = 0;
> + rules->inaddrs.ip6.s6_addr32[2] = 0;
> + rules->inaddrs.ip6.s6_addr32[3] = 0;
> + }
> + }
> + rules->next = emalloc(sizeof(*rules));
> + rules = rules->next;
> + }
> + }
> + }
> }
> -
>
> void
> rules_init(rules, preferences)
> @@ -194,32 +312,6 @@
> }
>
> struct openvas_rules *
> -rules_dup_aux(s, r)
> - struct openvas_rules * s, *r;
> -{
> - printf("rules_dup called - does not work\n");
> - if(!s->next)return r;
> - else
> - {
> - r->ip.s_addr = s->ip.s_addr;
> - r->mask = s->mask;
> - r->rule = s->rule;
> - r->not = s->not;
> - r->def = s->def;
> - r->next = emalloc(sizeof(*r));
> - return rules_dup_aux(s->next,r->next);
> - }
> -}
> -struct openvas_rules *
> -rules_dup(struct openvas_rules *s)
> -{
> - struct openvas_rules * r = emalloc(sizeof(*r));
> - return rules_dup_aux(s, r);
> -}
> -
> -
> -
> -struct openvas_rules *
> rules_cat(struct openvas_rules * a,
> struct openvas_rules * b)
> {
> @@ -239,17 +331,25 @@
> }
>
>
> -void rules_set_client_ip(struct openvas_rules * r, struct in_addr client)
> +void rules_set_client_ip(struct openvas_rules * r, inaddrs_t *addrs, int
> family) {
> - if(!r)
> - return;
> - else
> + while(r)
> {
> - if(r->client_ip)
> - r->ip = client;
> - rules_set_client_ip(r->next, client);
> + if(r->client_ip)
> + {
> + if(family == AF_INET)
> + {
> + r->inaddrs.ip.s_addr = addrs->ip.s_addr;
> + }
> + else
> + {
> + memcpy(&r->inaddrs.ip6,&addrs->ip6,sizeof(struct in6_addr));
> + }
> + }
> + r = r->next;
> }
> }
> +
> void rules_set_def(struct openvas_rules * r, int def)
> {
> if(!r)return;
> @@ -291,7 +391,13 @@
> {
> if(!username)
> {
> - accept_rules->ip.s_addr = t->ip.s_addr;
> + if(t->family == AF_INET)
> + accept_rules->inaddrs.ip.s_addr = t->inaddrs.ip.s_addr;
> + else
> + {
> + memcpy(&accept_rules->inaddrs.ip6, &t->inaddrs.ip6, sizeof(struct
> in6_addr)); + }
> + accept_rules->family = t->family;
> accept_rules->client_ip = t->client_ip;
> accept_rules->mask = t->mask;
> accept_rules->rule = t->rule;
> @@ -302,12 +408,18 @@
> else
> {
> log_write("user %s : attempted to gain more rights by adding accept
> %s/%d", - username, inet_ntoa(t->ip), t->mask);
> + username, inet_ntoa(t->inaddrs.ip), t->mask);
> }
> }
> else
> {
> - reject_rules->ip.s_addr = t->ip.s_addr;
> + if(t->family == AF_INET)
> + reject_rules->inaddrs.ip.s_addr = t->inaddrs.ip.s_addr;
> + else
> + {
> + memcpy(&reject_rules->inaddrs.ip6, &t->inaddrs.ip6, sizeof(struct
> in6_addr)); + }
> + reject_rules->family = t->family;
> reject_rules->client_ip = t->client_ip;
> reject_rules->mask = t->mask;
> reject_rules->rule = t->rule;
> @@ -327,7 +439,7 @@
>
> rules_set_def(*rules, def);
>
> -#ifdef DEBUG_RULES
> +#ifdef DEBUG_RULES
> printf("After rules_cat : \n");
> rules_dump(*rules);
> #endif
> @@ -337,49 +449,106 @@
> void
> rules_dump(struct openvas_rules * rules)
> {
> - if(!rules->next)return;
> - printf("%d %c%s/%d (def %d)\n", rules->rule, rules->not?'!':' ',
> inet_ntoa(rules->ip), rules->mask, - rules->def);
> - rules_dump(rules->next);
> + struct openvas_rules *r;
> + char buf[INET6_ADDRSTRLEN];
> + r = rules;
> + while(r)
> + {
> + if(r->family == AF_INET)
> + printf("%d %c%s/%d (def %d)\n", r->rule, r->not?'!':' ',
> inet_ntop(r->family, &r->inaddrs.ip, buf,sizeof(buf)), r->mask, +
> r->def);
> + else
> + printf("%d %c%s/%d (def %d)\n", r->rule, r->not?'!':' ',
> inet_ntop(r->family, &r->inaddrs.ip6, buf,sizeof(buf)), r->mask, +
> r->def);
> + r = r->next;
> + }
> }
> #endif
>
> int
> -get_host_rules (struct openvas_rules * rules, struct in_addr addr,
> - int netmask)
> +get_host_rules (struct openvas_rules * rules, inaddrs_t addr)
> {
> - struct in_addr backup;
> + struct in_addr tstaddr;
> + struct in6_addr tstaddr6;
>
> + tstaddr.s_addr = 0;
> +
> if (!rules)
> - {
> - fprintf(stderr, "???? no rules - this is likely to be a bug\n");
> - fprintf(stderr, "Please report at bugs.openvas.org\n");
> - return RULES_ACCEPT;
> - }
> - if (!rules->next)
> - return rules->def;
> + {
> + fprintf(stderr, "???? no rules - this is likely to be a bug\n");
> + fprintf(stderr, "Please report at bugs.openvas.org\n");
> + return RULES_ACCEPT;
> + }
>
> - backup.s_addr = addr.s_addr;
> - if (rules->mask > 0)
> + while(rules)
> + {
> + if (!rules->next)
> + return rules->def;
> +
> + if(rules->family == AF_INET)
> {
> - addr.s_addr = ntohl(addr.s_addr) >> (32 - rules->mask);
> - addr.s_addr = htonl(addr.s_addr << (32 - rules->mask));
> - }
> - else addr.s_addr = 0;
> + tstaddr.s_addr = addr.ip.s_addr;
> + if (rules->mask > 0)
> + {
> + tstaddr.s_addr = ntohl(tstaddr.s_addr) >> (32 - rules->mask);
> + tstaddr.s_addr = htonl(tstaddr.s_addr << (32 - rules->mask));
> + }
> + else tstaddr.s_addr = 0;
>
> - if(rules->not)
> - {
> - if (addr.s_addr != rules->ip.s_addr)
> - return(rules->rule);
> + if(rules->not)
> + {
> + if (tstaddr.s_addr != rules->inaddrs.ip.s_addr)
> + return(rules->rule);
> + }
> + else
> + {
> + if (tstaddr.s_addr == rules->inaddrs.ip.s_addr)
> + {
> + return(rules->rule);
> + }
> + }
> }
> - else
> + else
> {
> - if (addr.s_addr == rules->ip.s_addr)
> + /* Check whether ipv6 address can be scanned */
> + memcpy(&tstaddr6, &addr.ip6, sizeof(struct in6_addr));
> + if (rules->mask > 0)
> + rules_ipv6addrmask(&tstaddr6, rules->mask);
> + else
> + {
> + tstaddr6.s6_addr32[0] = 0;
> + tstaddr6.s6_addr32[1] = 0;
> + tstaddr6.s6_addr32[2] = 0;
> + tstaddr6.s6_addr32[3] = 0;
> + }
> + if(rules->not)
> + {
> + /* If not equal return rules->rule*/
> + if( tstaddr6.s6_addr32[0] != rules->inaddrs.ip6.s6_addr32[0] || \
> + tstaddr6.s6_addr32[1] != rules->inaddrs.ip6.s6_addr32[1] || \
> + tstaddr6.s6_addr32[2] != rules->inaddrs.ip6.s6_addr32[2] || \
> + tstaddr6.s6_addr32[3] != rules->inaddrs.ip6.s6_addr32[3] \
> + )
> + return(rules->rule);
> + }
> + else
> + {
> + /* If equal return rules->rule*/
> + if( tstaddr6.s6_addr32[0] == rules->inaddrs.ip6.s6_addr32[0] && \
> + tstaddr6.s6_addr32[1] == rules->inaddrs.ip6.s6_addr32[1] && \
> + tstaddr6.s6_addr32[2] == rules->inaddrs.ip6.s6_addr32[2] && \
> + tstaddr6.s6_addr32[3] == rules->inaddrs.ip6.s6_addr32[3] \
> + )
> + if (tstaddr.s_addr == rules->inaddrs.ip.s_addr)
> {
> return(rules->rule);
> }
> + }
> }
> - return get_host_rules (rules->next, backup, netmask);
> + rules = rules->next;
> + }
> + fprintf(stderr, "Rules check ended: May be bug? Please report\n");
> + return RULES_ACCEPT;
> }
>
> void
> @@ -392,4 +561,3 @@
> rules = next;
> }
> }
> -
>
> Modified: trunk/openvas-server/openvasd/rules.h
> ===================================================================
> --- trunk/openvas-server/openvasd/rules.h 2009-08-20 09:02:13 UTC (rev
> 4633) +++ trunk/openvas-server/openvasd/rules.h 2009-08-20 09:20:32 UTC
> (rev 4634) @@ -34,9 +34,16 @@
> /**
> * Representation of a chain of rules.
> */
> +typedef union inaddrs
> +{
> + struct in_addr ip;
> + struct in6_addr ip6;
> +} inaddrs_t;
> +
> struct openvas_rules
> {
> - struct in_addr ip;
> + inaddrs_t inaddrs;
> + int family;
> int client_ip; /**< If set to 1, then 'ip' will be replaced by the
> client ip when appropriate. */
> int mask;
> @@ -55,7 +62,7 @@
> struct openvas_rules * rules_parse(char * , struct openvas_rules *, int);
> struct openvas_rules * rules_dup(struct openvas_rules *);
> void rules_set_def(struct openvas_rules *, int);
> -void rules_set_client_ip(struct openvas_rules *, struct in_addr);
> -int get_host_rules(struct openvas_rules *, struct in_addr, int);
> +void rules_set_client_ip(struct openvas_rules *, inaddrs_t *, int family);
> +int get_host_rules(struct openvas_rules *, inaddrs_t inaddrs);
>
> #endif
>
> _______________________________________________
> Openvas-commits mailing list
> Openvas-commits at wald.intevation.org
> http://lists.wald.intevation.org/mailman/listinfo/openvas-commits
--
Felix Wolfsteller | ++49-541-335 08 3451 | http://www.intevation.de/
PGP Key: 39DE0100
Intevation GmbH, Neuer Graben 17, 49074 Osnabrück | AG Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner
More information about the Openvas-devel
mailing list