At least 26 people were killed in a weekend attack by al-Shabab, a group the US has been battling for decades.