Lines Matching +full:link +full:- +full:name

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
56 #include "link.h"
74 #define device2udp(d) ((d)->type == UDP_DEVICE ? (struct udpdevice *)d : NULL)
85 struct udpdevice *dev = device2udp(p->handler); in udp_Sendto()
88 switch (dev->connected) { in udp_Sendto()
90 ret = write(p->fd, v, n); in udp_Sendto()
95 ret = sendto(p->fd, v, n, 0, (struct sockaddr *)&dev->sock, in udp_Sendto()
96 sizeof dev->sock); in udp_Sendto()
99 if (dev->connected == UDP_MAYBEUNCONNECTED) { in udp_Sendto()
100 if (ret == -1 && errno == EISCONN) { in udp_Sendto()
101 dev->connected = UDP_CONNECTED; in udp_Sendto()
102 ret = write(p->fd, v, n); in udp_Sendto()
104 dev->connected = UDP_UNCONNECTED; in udp_Sendto()
113 struct udpdevice *dev = device2udp(p->handler); in udp_Recvfrom()
116 if (dev->connected == UDP_CONNECTED) in udp_Recvfrom()
117 return read(p->fd, v, n); in udp_Recvfrom()
119 sz = sizeof dev->sock; in udp_Recvfrom()
120 ret = recvfrom(p->fd, v, n, 0, (struct sockaddr *)&dev->sock, &sz); in udp_Recvfrom()
122 if (*p->name.full == '\0') { in udp_Recvfrom()
123 snprintf(p->name.full, sizeof p->name.full, "%s:%d/udp", in udp_Recvfrom()
124 inet_ntoa(dev->sock.sin_addr), ntohs(dev->sock.sin_port)); in udp_Recvfrom()
125 p->name.base = p->name.full; in udp_Recvfrom()
134 struct udpdevice *dev = device2udp(p->handler); in udp_Free()
190 memcpy(&dev->dev, &baseudpdevice, sizeof dev->dev); in udp_iov2device()
192 physical_SetupStack(p, dev->dev.name, PHYSICAL_FORCE_SYNC); in udp_iov2device()
193 return &dev->dev; in udp_iov2device()
207 p->link.name, strerror(errno)); in udp_CreateDevice()
211 dev->sock.sin_family = AF_INET; in udp_CreateDevice()
212 dev->sock.sin_addr = GetIpAddr(host); in udp_CreateDevice()
213 if (dev->sock.sin_addr.s_addr == INADDR_NONE) { in udp_CreateDevice()
214 log_Printf(LogWARN, "%s: %s: unknown host\n", p->link.name, host); in udp_CreateDevice()
218 dev->sock.sin_port = htons(atoi(port)); in udp_CreateDevice()
219 if (dev->sock.sin_port == 0) { in udp_CreateDevice()
222 dev->sock.sin_port = sp->s_port; in udp_CreateDevice()
224 log_Printf(LogWARN, "%s: %s: unknown service\n", p->link.name, port); in udp_CreateDevice()
230 log_Printf(LogPHASE, "%s: Connecting to %s:%s/udp\n", p->link.name, in udp_CreateDevice()
233 p->fd = socket(PF_INET, SOCK_DGRAM, 0); in udp_CreateDevice()
234 if (p->fd >= 0) { in udp_CreateDevice()
235 log_Printf(LogDEBUG, "%s: Opened udp socket %s\n", p->link.name, in udp_CreateDevice()
236 p->name.full); in udp_CreateDevice()
237 if (connect(p->fd, (struct sockaddr *)&dev->sock, sizeof dev->sock) == 0) { in udp_CreateDevice()
238 dev->connected = UDP_CONNECTED; in udp_CreateDevice()
241 log_Printf(LogWARN, "%s: connect: %s\n", p->name.full, strerror(errno)); in udp_CreateDevice()
243 log_Printf(LogWARN, "%s: socket: %s\n", p->name.full, strerror(errno)); in udp_CreateDevice()
245 close(p->fd); in udp_CreateDevice()
246 p->fd = -1; in udp_CreateDevice()
259 if (p->fd < 0) { in udp_Create()
260 if ((cp = strchr(p->name.full, ':')) != NULL && !strchr(cp + 1, ':')) { in udp_Create()
262 host = p->name.full; in udp_Create()
270 p->fd--; /* We own the device but maybe can't use it - change fd */ in udp_Create()
285 if (fstat(p->fd, &st) != -1 && (st.st_mode & S_IFSOCK)) { in udp_Create()
289 if (getsockopt(p->fd, SOL_SOCKET, SO_TYPE, &type, &sz) == -1) { in udp_Create()
290 log_Printf(LogPHASE, "%s: Link is a closed socket !\n", p->link.name); in udp_Create()
291 close(p->fd); in udp_Create()
292 p->fd = -1; in udp_Create()
302 p->link.name, strerror(errno)); in udp_Create()
306 if (getpeername(p->fd, sockp, &sz) == 0) { in udp_Create()
307 log_Printf(LogPHASE, "%s: Link is a connected udp socket\n", in udp_Create()
308 p->link.name); in udp_Create()
309 dev->connected = UDP_CONNECTED; in udp_Create()
311 log_Printf(LogPHASE, "%s: Link is a disconnected udp socket\n", in udp_Create()
312 p->link.name); in udp_Create()
314 dev->connected = UDP_MAYBEUNCONNECTED; in udp_Create()
316 if (p->link.lcp.cfg.openmode != OPEN_PASSIVE) { in udp_Create()
318 p->link.name); in udp_Create()
319 p->link.lcp.cfg.openmode = OPEN_PASSIVE; in udp_Create()
327 memcpy(&dev->dev, &baseudpdevice, sizeof dev->dev); in udp_Create()
328 physical_SetupStack(p, dev->dev.name, PHYSICAL_FORCE_SYNC); in udp_Create()
329 if (p->cfg.cd.necessity != CD_DEFAULT) in udp_Create()
331 return &dev->dev; in udp_Create()