+/* XXX need better error handling for gone interfaces, delete routes and so on
+ * moreover there's no way to put an interface back short of restarting atalkd
+ * thus after the first time, silently fail
+*/
+static ssize_t sendto_iface(struct interface *iface, int sockfd, const void *buf, size_t len,
+ const struct sockaddr_at *dest_addr)
+{
+ ssize_t ret = sendto( sockfd, buf, len, 0, (struct sockaddr *)dest_addr, sizeof( struct sockaddr_at ));
+
+ if (ret < 0 ) {
+ if (!(iface->i_flags & IFACE_ERROR)) {
+ LOG(log_error, logtype_atalkd, "as_timer sendto %u.%u (%u): %s",
+ ntohs( dest_addr->sat_addr.s_net ),
+ dest_addr->sat_addr.s_node,
+ ntohs( iface->i_rt->rt_firstnet ),
+ strerror(errno) );
+ }
+ iface->i_flags |= IFACE_ERROR;
+ }
+ else {
+ iface->i_flags &= ~IFACE_ERROR;
+ }
+ return ret;
+}