Exemple #1
0
void check_options(void) {
	if (!opt_enabled(LOG_TCP | LOG_UDP | LOG_ICMP))
		fatal("Told not to log anything.  Exiting.");

	if (opt_enabled(PROMISC) && opt_enabled(GET_IDENT))
		fatal("The promisc and get_ident flags are not compatible.");

	if (opt_enabled(NO_RESOLV))
		flags &= ~(TCP_RES | UDP_RES | ICMP_RES);
	else if (!(flags & (TCP_RES | UDP_RES | ICMP_RES)))
		flags |= NO_RESOLV;

	if (!opt_enabled(TCP_RES))
		flags &= ~SYN_FLOOD;

	if (opt_enabled(DNS_CACHE) && opt_enabled(NO_RESOLV))
		flags ^= DNS_CACHE;

	if (opt_enabled(SMURF) && !opt_enabled(LOG_ICMP | LOG_UDP))
		flags ^= SMURF;

	if (!opt_enabled(LOG_TCP))
		flags &= ~(PORTSCAN | NULL_SCAN | FIN_SCAN | XMAS_SCAN);

	if (!opt_enabled(LOG_ICMP))
		flags &= ~PING_FLOOD;

	if (!opt_enabled(LOG_UDP))
		flags &= ~(UDP_SCAN | IGNORE_NS);

	if (opt_enabled(FOOL_NMAP) && get_raw_sock() == false)
		flags ^= FOOL_NMAP;
}
int raw_get_info(char *buffer, char **start, off_t offset, int length)
{
	int len = 0, num = 0, i;
	off_t pos = 128;
	off_t begin;
	char tmpbuf[129];

	if (offset < 128) 
		len += sprintf(buffer, "%-127s\n",
			       "  sl  local_address rem_address   st tx_queue "
			       "rx_queue tr tm->when retrnsmt   uid  timeout "
			       "inode");
	read_lock(&raw_v4_lock);
	for (i = 0; i < RAWV4_HTABLE_SIZE; i++) {
		struct sock *sk;

		for (sk = raw_v4_htable[i]; sk; sk = sk->next, num++) {
			if (sk->family != PF_INET)
				continue;
			pos += 128;
			if (pos <= offset)
				continue;
			get_raw_sock(sk, tmpbuf, i);
			len += sprintf(buffer + len, "%-127s\n", tmpbuf);
			if (len >= length)
				goto out;
		}
	}
out:
	read_unlock(&raw_v4_lock);
	begin = len - (pos - offset);
	*start = buffer + begin;
	len -= begin;
	if (len > length)
		len = length;
	if (len < 0)
		len = 0; 
	return len;
}