Hi Gianfranco,

> $> ip rule show 
> 
> 0:    from all lookup local 
> 0:    from all lookup main 
> 0:    from all fwmark 0x1 lookup 1 
> 0:    from all fwmark 0x100 lookup ISP1 
> 0:    from all fwmark 0x101 lookup ISP2 
> —————————————————————————————

What does the routing table for the 0x100 and 0x101 look like?

$ ip route show table 0x100

...

> $> iptables -t filter -L 
> 
> Chain INPUT (policy ACCEPT)
> target     prot opt source               destination         
> 
> Chain FORWARD (policy ACCEPT)
> target     prot opt source               destination         
> 
> Chain OUTPUT (policy ACCEPT)
> target     prot opt source               destination     
> —————————————————————————————
> 
> $> iptables -t mangle -L 
> 
> Chain PREROUTING (policy ACCEPT)
> target     prot opt source               destination         
> MARK       tcp  --  anywhere             anywhere             tcp dpt:http 
> MARK set 0x64
> MARK       tcp  --  anywhere             anywhere             tcp dpt:http 
> MARK set 0x1
> 
> Chain INPUT (policy ACCEPT)
> target     prot opt source               destination         
> connman-INPUT  all  --  anywhere             anywhere            
> 
> Chain FORWARD (policy ACCEPT)
> target     prot opt source               destination         
> 
> Chain OUTPUT (policy ACCEPT)
> target     prot opt source               destination         
> connman-OUTPUT  all  --  anywhere             anywhere            
> 
> Chain POSTROUTING (policy ACCEPT)
> target     prot opt source               destination         
> connman-POSTROUTING  all  --  anywhere             anywhere            
> 
> Chain connman-INPUT (1 references)
> target     prot opt source               destination         
> CONNMARK   all  --  anywhere             anywhere             CONNMARK restore
> 
> Chain connman-OUTPUT (1 references)
> target     prot opt source               destination         
> MARK       all  --  anywhere             anywhere             owner UID match 
> ethsession MARK set 0x100
> MARK       all  --  anywhere             anywhere             owner UID match 
> wifisession MARK set 0x101
> 
> Chain connman-POSTROUTING (1 references)
> target     prot opt source               destination         
> CONNMARK   all  --  anywhere             anywhere             CONNMARK save
> —————————————————————————————

I am afraid, but the work for getting it routed to the right interface
is not finished yet.

So the initial plan was to go with SO_MARK set via a cgroup controller
if you don't want to touch your application. For testing purpose you
could either hack your application to set the SO_MARK option correctly
or you hack one of the network cgroup controllers to allow setting the
SO_MARK as well.

The current mainline kernel allows to set the classid via a cgroup.
Maybe going with the classid instead of mark would work as well for
routing decision. That needs some research

Anyway you need either to touch your application or have something move
the application into a cgroup which does set the marker right.

Hope that helps,
daniel
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to