Функция bind() принимает указатель на sockaddr, но во всех примерах, которые я видел, вместо этого используется структура sockaddr_in, и добавляется к sockaddr:
struct sockaddr_in name;
...
if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
...
Я не могу окунуться в голову, почему используется структура sockaddr_in. Почему бы не просто подготовить и передать sockaddr?
Это просто соглашение?