Hi Dan, On Tue, 2007-03-13 at 04:28 +0000, Daniel P. Berrange wrote: > static int > iptablesPhysdevForward(iptablesContext *ctx, > const char *iface, > + const char *target, > int action) > { > - return iptablesAddRemoveRule(ctx->forward_filter, > - action, > - "--match", "physdev", > - "--physdev-in", iface, > - "--jump", "ACCEPT", > - NULL); > + if (target && target[0]) { > + return iptablesAddRemoveRule(ctx->forward_filter, > + action, > + "--match", "physdev", > + "--physdev-in", iface, > + "--out", target, > + "--jump", "ACCEPT", > + NULL); > + } else { > + return iptablesAddRemoveRule(ctx->forward_filter, > + action, > + "--match", "physdev", > + "--physdev-in", iface, > + "--jump", "ACCEPT", > + NULL); > + } > } This bit looks wrong to me. The rule is intended to allow frames from the given bridge port to be forwarded across the bridge. AFAIK --out would match against the outgoing bridge port in this case. Certainly the interface which we wish to allow IP forwarding to isn't relevant to this rule. Cheers, Mark.