-u32 fib_rules_policy(u32 saddr, struct fib_result *res, unsigned *flags)
-{
- struct fib_rule *r = res->r;
-
- if (r->r_action == RTN_NAT) {
- int addrtype = inet_addr_type(r->r_srcmap);
-
- if (addrtype == RTN_NAT) {
- /* Packet is from translated source; remember it */
- saddr = (saddr&~r->r_srcmask)|r->r_srcmap;
- *flags |= RTCF_SNAT;
- } else if (addrtype == RTN_LOCAL || r->r_srcmap == 0) {
- /* Packet is from masqueraded source; remember it */
- saddr = r->r_srcmap;
- *flags |= RTCF_MASQ;
- }
- }
- return saddr;
-}
-