00001
00002
00003
00004
00005
00006
00007
00008 #include "internal/internal.h"
00009
00010 static const void *get_attr_orig_ipv4_src(const struct nf_conntrack *ct)
00011 {
00012 return &ct->tuple[__DIR_ORIG].src.v4;
00013 }
00014
00015 static const void *get_attr_orig_ipv4_dst(const struct nf_conntrack *ct)
00016 {
00017 return &ct->tuple[__DIR_ORIG].dst.v4;
00018 }
00019
00020 static const void *get_attr_repl_ipv4_src(const struct nf_conntrack *ct)
00021 {
00022 return &ct->tuple[__DIR_REPL].src.v4;
00023 }
00024
00025 static const void *get_attr_repl_ipv4_dst(const struct nf_conntrack *ct)
00026 {
00027 return &ct->tuple[__DIR_REPL].dst.v4;
00028 }
00029
00030 static const void *get_attr_orig_ipv6_src(const struct nf_conntrack *ct)
00031 {
00032 return &ct->tuple[__DIR_ORIG].src.v6;
00033 }
00034
00035 static const void *get_attr_orig_ipv6_dst(const struct nf_conntrack *ct)
00036 {
00037 return &ct->tuple[__DIR_ORIG].dst.v6;
00038 }
00039
00040 static const void *get_attr_repl_ipv6_src(const struct nf_conntrack *ct)
00041 {
00042 return &ct->tuple[__DIR_REPL].src.v6;
00043 }
00044
00045 static const void *get_attr_repl_ipv6_dst(const struct nf_conntrack *ct)
00046 {
00047 return &ct->tuple[__DIR_REPL].dst.v6;
00048 }
00049
00050 static const void *get_attr_orig_port_src(const struct nf_conntrack *ct)
00051 {
00052 return &ct->tuple[__DIR_ORIG].l4src.all;
00053 }
00054
00055 static const void *get_attr_orig_port_dst(const struct nf_conntrack *ct)
00056 {
00057 return &ct->tuple[__DIR_ORIG].l4dst.all;
00058 }
00059
00060 static const void *get_attr_repl_port_src(const struct nf_conntrack *ct)
00061 {
00062 return &ct->tuple[__DIR_REPL].l4src.all;
00063 }
00064
00065 static const void *get_attr_repl_port_dst(const struct nf_conntrack *ct)
00066 {
00067 return &ct->tuple[__DIR_REPL].l4dst.all;
00068 }
00069
00070 static const void *get_attr_icmp_type(const struct nf_conntrack *ct)
00071 {
00072 return &ct->tuple[__DIR_ORIG].l4dst.icmp.type;
00073 }
00074
00075 static const void *get_attr_icmp_code(const struct nf_conntrack *ct)
00076 {
00077 return &ct->tuple[__DIR_ORIG].l4dst.icmp.code;
00078 }
00079
00080 static const void *get_attr_icmp_id(const struct nf_conntrack *ct)
00081 {
00082 return &ct->tuple[__DIR_ORIG].l4src.icmp.id;
00083 }
00084
00085 static const void *get_attr_orig_l3proto(const struct nf_conntrack *ct)
00086 {
00087 return &ct->tuple[__DIR_ORIG].l3protonum;
00088 }
00089
00090 static const void *get_attr_repl_l3proto(const struct nf_conntrack *ct)
00091 {
00092 return &ct->tuple[__DIR_REPL].l3protonum;
00093 }
00094
00095 static const void *get_attr_orig_l4proto(const struct nf_conntrack *ct)
00096 {
00097 return &ct->tuple[__DIR_ORIG].protonum;
00098 }
00099
00100 static const void *get_attr_repl_l4proto(const struct nf_conntrack *ct)
00101 {
00102 return &ct->tuple[__DIR_REPL].protonum;
00103 }
00104
00105 static const void *get_attr_master_ipv4_src(const struct nf_conntrack *ct)
00106 {
00107 return &ct->tuple[__DIR_MASTER].src.v4;
00108 }
00109
00110 static const void *get_attr_master_ipv4_dst(const struct nf_conntrack *ct)
00111 {
00112 return &ct->tuple[__DIR_MASTER].dst.v4;
00113 }
00114
00115 static const void *get_attr_master_ipv6_src(const struct nf_conntrack *ct)
00116 {
00117 return &ct->tuple[__DIR_MASTER].src.v6;
00118 }
00119
00120 static const void *get_attr_master_ipv6_dst(const struct nf_conntrack *ct)
00121 {
00122 return &ct->tuple[__DIR_MASTER].dst.v6;
00123 }
00124
00125 static const void *get_attr_master_port_src(const struct nf_conntrack *ct)
00126 {
00127 return &ct->tuple[__DIR_MASTER].l4src.all;
00128 }
00129
00130 static const void *get_attr_master_port_dst(const struct nf_conntrack *ct)
00131 {
00132 return &ct->tuple[__DIR_MASTER].l4dst.all;
00133 }
00134
00135 static const void *get_attr_master_l3proto(const struct nf_conntrack *ct)
00136 {
00137 return &ct->tuple[__DIR_MASTER].l3protonum;
00138 }
00139
00140 static const void *get_attr_master_l4proto(const struct nf_conntrack *ct)
00141 {
00142 return &ct->tuple[__DIR_MASTER].protonum;
00143 }
00144
00145 static const void *get_attr_tcp_state(const struct nf_conntrack *ct)
00146 {
00147 return &ct->protoinfo.tcp.state;
00148 }
00149
00150 static const void *get_attr_tcp_flags_orig(const struct nf_conntrack *ct)
00151 {
00152 return &ct->protoinfo.tcp.flags[__DIR_ORIG].value;
00153 }
00154
00155 static const void *get_attr_tcp_mask_orig(const struct nf_conntrack *ct)
00156 {
00157 return &ct->protoinfo.tcp.flags[__DIR_ORIG].mask;
00158 }
00159
00160 static const void *get_attr_tcp_flags_repl(const struct nf_conntrack *ct)
00161 {
00162 return &ct->protoinfo.tcp.flags[__DIR_REPL].value;
00163 }
00164
00165 static const void *get_attr_tcp_mask_repl(const struct nf_conntrack *ct)
00166 {
00167 return &ct->protoinfo.tcp.flags[__DIR_REPL].mask;
00168 }
00169
00170 static const void *get_attr_tcp_wscale_orig(const struct nf_conntrack *ct)
00171 {
00172 return &ct->protoinfo.tcp.wscale[__DIR_ORIG];
00173 }
00174
00175 static const void *get_attr_tcp_wscale_repl(const struct nf_conntrack *ct)
00176 {
00177 return &ct->protoinfo.tcp.wscale[__DIR_REPL];
00178 }
00179
00180 static const void *get_attr_sctp_state(const struct nf_conntrack *ct)
00181 {
00182 return &ct->protoinfo.sctp.state;
00183 }
00184
00185 static const void *get_attr_sctp_vtag_orig(const struct nf_conntrack *ct)
00186 {
00187 return &ct->protoinfo.sctp.vtag[__DIR_ORIG];
00188 }
00189
00190 static const void *get_attr_sctp_vtag_repl(const struct nf_conntrack *ct)
00191 {
00192 return &ct->protoinfo.sctp.vtag[__DIR_REPL];
00193 }
00194
00195 static const void *get_attr_snat_ipv4(const struct nf_conntrack *ct)
00196 {
00197 return &ct->snat.min_ip;
00198 }
00199
00200 static const void *get_attr_dnat_ipv4(const struct nf_conntrack *ct)
00201 {
00202 return &ct->dnat.min_ip;
00203 }
00204
00205 static const void *get_attr_snat_port(const struct nf_conntrack *ct)
00206 {
00207 return &ct->snat.l4min.all;
00208 }
00209
00210 static const void *get_attr_dnat_port(const struct nf_conntrack *ct)
00211 {
00212 return &ct->dnat.l4min.all;
00213 }
00214
00215 static const void *get_attr_timeout(const struct nf_conntrack *ct)
00216 {
00217 return &ct->timeout;
00218 }
00219
00220 static const void *get_attr_mark(const struct nf_conntrack *ct)
00221 {
00222 return &ct->mark;
00223 }
00224
00225 static const void *get_attr_secmark(const struct nf_conntrack *ct)
00226 {
00227 return &ct->secmark;
00228 }
00229
00230 static const void *get_attr_orig_counter_packets(const struct nf_conntrack *ct)
00231 {
00232 return &ct->counters[__DIR_ORIG].packets;
00233 }
00234
00235 static const void *get_attr_orig_counter_bytes(const struct nf_conntrack *ct)
00236 {
00237 return &ct->counters[__DIR_ORIG].bytes;
00238 }
00239
00240 static const void *get_attr_repl_counter_packets(const struct nf_conntrack *ct)
00241 {
00242 return &ct->counters[__DIR_REPL].packets;
00243 }
00244
00245 static const void *get_attr_repl_counter_bytes(const struct nf_conntrack *ct)
00246 {
00247 return &ct->counters[__DIR_REPL].bytes;
00248 }
00249
00250 static const void *get_attr_status(const struct nf_conntrack *ct)
00251 {
00252 return &ct->status;
00253 }
00254
00255 static const void *get_attr_use(const struct nf_conntrack *ct)
00256 {
00257 return &ct->use;
00258 }
00259
00260 static const void *get_attr_id(const struct nf_conntrack *ct)
00261 {
00262 return &ct->id;
00263 }
00264
00265 static const void *get_attr_orig_cor_pos(const struct nf_conntrack *ct)
00266 {
00267 return &ct->tuple[__DIR_ORIG].natseq.correction_pos;
00268 }
00269
00270 static const void *get_attr_orig_off_bfr(const struct nf_conntrack *ct)
00271 {
00272 return &ct->tuple[__DIR_ORIG].natseq.offset_before;
00273 }
00274
00275 static const void *get_attr_orig_off_aft(const struct nf_conntrack *ct)
00276 {
00277 return &ct->tuple[__DIR_ORIG].natseq.offset_after;
00278 }
00279
00280 static const void *get_attr_repl_cor_pos(const struct nf_conntrack *ct)
00281 {
00282 return &ct->tuple[__DIR_REPL].natseq.correction_pos;
00283 }
00284
00285 static const void *get_attr_repl_off_bfr(const struct nf_conntrack *ct)
00286 {
00287 return &ct->tuple[__DIR_REPL].natseq.offset_before;
00288 }
00289
00290 static const void *get_attr_repl_off_aft(const struct nf_conntrack *ct)
00291 {
00292 return &ct->tuple[__DIR_REPL].natseq.offset_after;
00293 }
00294
00295 static const void *get_attr_helper_name(const struct nf_conntrack *ct)
00296 {
00297 return ct->helper_name;
00298 }
00299
00300 static const void *get_attr_dccp_state(const struct nf_conntrack *ct)
00301 {
00302 return &ct->protoinfo.dccp.state;
00303 }
00304
00305 static const void *get_attr_dccp_role(const struct nf_conntrack *ct)
00306 {
00307 return &ct->protoinfo.dccp.role;
00308 }
00309
00310 static const void *get_attr_dccp_handshake_seq(const struct nf_conntrack *ct)
00311 {
00312 return &ct->protoinfo.dccp.handshake_seq;
00313 }
00314
00315 static const void *get_attr_zone(const struct nf_conntrack *ct)
00316 {
00317 return &ct->zone;
00318 }
00319
00320 static const void *get_attr_secctx(const struct nf_conntrack *ct)
00321 {
00322 return ct->secctx;
00323 }
00324
00325 const get_attr get_attr_array[ATTR_MAX] = {
00326 [ATTR_ORIG_IPV4_SRC] = get_attr_orig_ipv4_src,
00327 [ATTR_ORIG_IPV4_DST] = get_attr_orig_ipv4_dst,
00328 [ATTR_REPL_IPV4_SRC] = get_attr_repl_ipv4_src,
00329 [ATTR_REPL_IPV4_DST] = get_attr_repl_ipv4_dst,
00330 [ATTR_ORIG_IPV6_SRC] = get_attr_orig_ipv6_src,
00331 [ATTR_ORIG_IPV6_DST] = get_attr_orig_ipv6_dst,
00332 [ATTR_REPL_IPV6_SRC] = get_attr_repl_ipv6_src,
00333 [ATTR_REPL_IPV6_DST] = get_attr_repl_ipv6_dst,
00334 [ATTR_ORIG_PORT_SRC] = get_attr_orig_port_src,
00335 [ATTR_ORIG_PORT_DST] = get_attr_orig_port_dst,
00336 [ATTR_REPL_PORT_SRC] = get_attr_repl_port_src,
00337 [ATTR_REPL_PORT_DST] = get_attr_repl_port_dst,
00338 [ATTR_ICMP_TYPE] = get_attr_icmp_type,
00339 [ATTR_ICMP_CODE] = get_attr_icmp_code,
00340 [ATTR_ICMP_ID] = get_attr_icmp_id,
00341 [ATTR_ORIG_L3PROTO] = get_attr_orig_l3proto,
00342 [ATTR_REPL_L3PROTO] = get_attr_repl_l3proto,
00343 [ATTR_ORIG_L4PROTO] = get_attr_orig_l4proto,
00344 [ATTR_REPL_L4PROTO] = get_attr_repl_l4proto,
00345 [ATTR_TCP_STATE] = get_attr_tcp_state,
00346 [ATTR_SNAT_IPV4] = get_attr_snat_ipv4,
00347 [ATTR_DNAT_IPV4] = get_attr_dnat_ipv4,
00348 [ATTR_SNAT_PORT] = get_attr_snat_port,
00349 [ATTR_DNAT_PORT] = get_attr_dnat_port,
00350 [ATTR_TIMEOUT] = get_attr_timeout,
00351 [ATTR_MARK] = get_attr_mark,
00352 [ATTR_ORIG_COUNTER_PACKETS] = get_attr_orig_counter_packets,
00353 [ATTR_ORIG_COUNTER_BYTES] = get_attr_orig_counter_bytes,
00354 [ATTR_REPL_COUNTER_PACKETS] = get_attr_repl_counter_packets,
00355 [ATTR_REPL_COUNTER_BYTES] = get_attr_repl_counter_bytes,
00356 [ATTR_USE] = get_attr_use,
00357 [ATTR_ID] = get_attr_id,
00358 [ATTR_STATUS] = get_attr_status,
00359 [ATTR_TCP_FLAGS_ORIG] = get_attr_tcp_flags_orig,
00360 [ATTR_TCP_FLAGS_REPL] = get_attr_tcp_flags_repl,
00361 [ATTR_TCP_MASK_ORIG] = get_attr_tcp_mask_orig,
00362 [ATTR_TCP_MASK_REPL] = get_attr_tcp_mask_repl,
00363 [ATTR_MASTER_IPV4_SRC] = get_attr_master_ipv4_src,
00364 [ATTR_MASTER_IPV4_DST] = get_attr_master_ipv4_dst,
00365 [ATTR_MASTER_IPV6_SRC] = get_attr_master_ipv6_src,
00366 [ATTR_MASTER_IPV6_DST] = get_attr_master_ipv6_dst,
00367 [ATTR_MASTER_PORT_SRC] = get_attr_master_port_src,
00368 [ATTR_MASTER_PORT_DST] = get_attr_master_port_dst,
00369 [ATTR_MASTER_L3PROTO] = get_attr_master_l3proto,
00370 [ATTR_MASTER_L4PROTO] = get_attr_master_l4proto,
00371 [ATTR_SECMARK] = get_attr_secmark,
00372 [ATTR_ORIG_NAT_SEQ_CORRECTION_POS] = get_attr_orig_cor_pos,
00373 [ATTR_ORIG_NAT_SEQ_OFFSET_BEFORE] = get_attr_orig_off_bfr,
00374 [ATTR_ORIG_NAT_SEQ_OFFSET_AFTER] = get_attr_orig_off_aft,
00375 [ATTR_REPL_NAT_SEQ_CORRECTION_POS] = get_attr_repl_cor_pos,
00376 [ATTR_REPL_NAT_SEQ_OFFSET_BEFORE] = get_attr_repl_off_bfr,
00377 [ATTR_REPL_NAT_SEQ_OFFSET_AFTER] = get_attr_repl_off_aft,
00378 [ATTR_SCTP_STATE] = get_attr_sctp_state,
00379 [ATTR_SCTP_VTAG_ORIG] = get_attr_sctp_vtag_orig,
00380 [ATTR_SCTP_VTAG_REPL] = get_attr_sctp_vtag_repl,
00381 [ATTR_HELPER_NAME] = get_attr_helper_name,
00382 [ATTR_DCCP_STATE] = get_attr_dccp_state,
00383 [ATTR_DCCP_ROLE] = get_attr_dccp_role,
00384 [ATTR_DCCP_HANDSHAKE_SEQ] = get_attr_dccp_handshake_seq,
00385 [ATTR_TCP_WSCALE_ORIG] = get_attr_tcp_wscale_orig,
00386 [ATTR_TCP_WSCALE_REPL] = get_attr_tcp_wscale_repl,
00387 [ATTR_ZONE] = get_attr_zone,
00388 [ATTR_SECCTX] = get_attr_secctx,
00389 };