* (c) 2001 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of Trivial IP Encryption (TrIPE).
*
* 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.
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@ --- *
*
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, {
/* --- @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;
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);
}
"bsd",
t_init,
t_create,
- t_ifname,
+ 0,
t_inject,
t_destroy
};