X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/blobdiff_plain/786989941b7b4504f0234c4a318f929802e981ad..dfc1ab4f3326bf8295ac8dca5c4821d57ef417e8:/server/tun-bsd.c diff --git a/server/tun-bsd.c b/server/tun-bsd.c index 4e8c0bd8..3a45b1e9 100644 --- a/server/tun-bsd.c +++ b/server/tun-bsd.c @@ -7,7 +7,7 @@ * (c) 2001 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of Trivial IP Encryption (TrIPE). * @@ -15,12 +15,12 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * TrIPE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with TrIPE; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -41,21 +41,7 @@ struct tunnel { sel_file f; /* Selector for tunnel device */ struct peer *p; /* Pointer to my peer */ unsigned n; /* Number of my tunnel device */ -}; - -/* --- @t_ifname@ --- * - * - * Arguments: @tunnel *t@ = pointer to tunnel block - * - * Returns: A pointer to the tunnel's interface name. - */ - -static const char *t_ifname(tunnel *t) -{ - static char buf[8]; - sprintf(buf, "tun%u", t->n); - return (buf); -} +}; /* --- @t_read@ --- * * @@ -76,7 +62,7 @@ static void t_read(int fd, unsigned mode, void *v) n = read(fd, buf_i, sizeof(buf_i)); if (n < 0) { - a_warn("TUN", "%s", t_ifname(t), "read-error", "?ERRNO", A_END); + a_warn("TUN", "%s", p_ifname(t->p), "read-error", "?ERRNO", A_END); return; } IF_TRACING(T_TUNNEL, { @@ -102,13 +88,14 @@ static void t_init(void) { return; } /* --- @t_create@ --- * * * Arguments: @peer *p@ = pointer to peer block + * @char **ifn@ = where to put the interface name * * Returns: A tunnel block if it worked, or null on failure. * * Use: Initializes a new tunnel. */ -static tunnel *t_create(peer *p) +static tunnel *t_create(peer *p, char **ifn) { int fd; unsigned n; @@ -141,8 +128,9 @@ static tunnel *t_create(peer *p) t->n = n; sel_initfile(&sel, &t->f, fd, SEL_READ, t_read, t); sel_addfile(&t->f); + *ifn = xstrdup(buf + 5); T( trace(T_TUNNEL, "tun-bsd: attached interface %s to peer `%s'", - t_ifname(t), p_name(p)); ) + *ifn, p_name(p)); ) return (t); } @@ -185,7 +173,7 @@ const tunnel_ops tun_bsd = { "bsd", t_init, t_create, - t_ifname, + 0, t_inject, t_destroy };