iproute2 has wrong hardcoded netfilter path with iptables-1.4.5 and iproute2-2.6.29.1-r1 tc filter add dev ifb0 parent 10:0 protocol ip prio 1 u32 \ match ip protocol 6 0xff \ match u8 0x05 0x0f at 0 \ match u16 0x0000 0xffc0 at 2 \ match u8 0x10 0xff at 33 \ flowid 10:1 \ action ipt -j MARK --set-mark 1 /usr/lib64/iptables/libipt_mark.so: cannot open shared object file: No such file or directory failed to find target MARK
This lib is in: /lib/xtables/libxt_mark.so
this was fixed at some point, but then broken along the way. changed 2.6.29.1-r2 to use a different method of setting the path.
It's not fixed, file name is wrong, it's libxt_mark.so now. It's possible that it won't be enough just to rename reference in iproute2 source. /lib64/xtables/libipt_mark.so: cannot open shared object file: No such file or directory
that is a different issue. ignoring that, the iproute2 code already has fallback logic to specifically handle the different named libraries. it only displays an error for the last tried file (which is what you showed). run things through strace to figure out why it's failing on your system.