this call here makes it seems like there is only one router snat port per network router  but  look at l it returns the port with ipv  address on it  shouldn t it be looking for the port that has a fixed ip on the given subnet id  this makes me think that the code you added on l is just a band aid  i tend to think that this call here is just plain wrong  shouldn t we fix this by looking getting the csnat port here that matches the subnet we passed in 