port/chan: support callbacks