void print_firewall_details(const struct iptables_command_state *cs, const char *targname, uint8_t flags, uint8_t invflags, uint8_t proto, unsigned int num, unsigned int format) { if (format & FMT_LINENUMBERS) printf(FMT("%-4u ", "%u "), num); if (!(format & FMT_NOCOUNTS)) { xtables_print_num(cs->counters.pcnt, format); xtables_print_num(cs->counters.bcnt, format); } if (!(format & FMT_NOTARGET)) printf(FMT("%-9s ", "%s "), targname ? targname : ""); fputc(invflags & XT_INV_PROTO ? '!' : ' ', stdout); { const char *pname = proto_to_name(proto, format&FMT_NUMERIC); if (pname) printf(FMT("%-5s", "%s "), pname); else printf(FMT("%-5hu", "%hu "), proto); } }
static char * port_to_service(int port, u_int8_t proto) { struct servent *service; if ((service = getservbyport(htons(port), proto_to_name(proto)))) return service->s_name; return NULL; }
static const char * check_proto(const struct ip6t_entry *entry) { char *proto; if ((proto = proto_to_name(entry->ipv6.proto)) != NULL) return proto; else if (!entry->ipv6.proto) exit_error(PARAMETER_PROBLEM, "multiport needs `-p tcp', `-p udp', `-p sctp' or `-p dccp'"); else exit_error(PARAMETER_PROBLEM, "multiport only works with TCP, UDP, SCTP and DCCP"); }
static struct xtables_match * find_proto(const char *pname, enum xtables_tryload tryload, int nolookup, struct xtables_rule_match **matches) { unsigned int proto; if (xtables_strtoui(pname, NULL, &proto, 0, UINT8_MAX)) { const char *protoname = proto_to_name(proto, nolookup); if (protoname) return xtables_find_match(protoname, tryload, matches); } else return xtables_find_match(pname, tryload, matches); return NULL; }
static const char * check_proto(u_int16_t pnum, u_int8_t invflags) { char *proto; if (invflags & XT_INV_PROTO) xtables_error(PARAMETER_PROBLEM, "multiport only works with TCP, UDP, UDPLITE, SCTP and DCCP"); if ((proto = proto_to_name(pnum)) != NULL) return proto; else if (!pnum) xtables_error(PARAMETER_PROBLEM, "multiport needs `-p tcp', `-p udp', `-p udplite', " "`-p sctp' or `-p dccp'"); else xtables_error(PARAMETER_PROBLEM, "multiport only works with TCP, UDP, UDPLITE, SCTP and DCCP"); }
static void print_header(u_int8_t flags){ int have_flag = 0; while (flags) { unsigned int i; for (i = 0; (flags & chain_flags[i].flag) == 0; i++); if (have_flag) printf(","); printf("%s", proto_to_name(chain_flags[i].proto,0)); have_flag = 1; flags &= ~chain_flags[i].flag; } if (!have_flag) printf("NONE"); }