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; }