nella struct iphdr i campi ip_src e ip_dst sono già delle struct in_addr
sockaddr_in non c'entra nulla direi...

Nel tuo caso dovrebbe bastare un :

printf("IP sorgente: %s\n", inet_ntoa(ip->ip_src));
printf("IP destinazione: %s\n", inet_ntoa(ip->ip_dst));