--- def.h.orig	1993-03-03 22:10:01.000000000 +0100
+++ def.h	2013-06-17 00:07:48.000000000 +0200
@@ -2,7 +2,7 @@
 
 #ifndef lint
 #ifdef MAIN
-static char	*h_sccsid = "@(#)def.h	9.8 91/06/11";
+static const char	*h_sccsid = "@(#)def.h	9.8 91/06/11";
 #endif /*MAIN*/
 #endif /*lint*/
 
@@ -13,7 +13,7 @@
 
 typedef	long Cost;
 typedef struct node node;
-typedef struct link link;
+typedef struct palink palink;
 typedef struct dom dom;
 
 #ifdef lint
@@ -63,7 +63,7 @@
 /* WARNING: if > 2^16 nodes, type of n_tloc must change */
 struct node {
 	char	*n_name;	/* host name */
-	link	*n_link;	/* adjacency list */
+	palink	*n_link;	/* adjacency list */
 	Cost	n_cost;		/* cost to this host */
 	union {
 		node *nu_net;	/* others in this network (parsing) */
@@ -114,11 +114,11 @@
 #define l_next un.lu_next
 #define l_from un.lu_from
 
-struct link {
+struct palink {
 	node	*l_to;		/* adjacent node */
 	Cost	l_cost;		/* edge cost */
 	union {
-		link *lu_next;	/* rest of adjacency list (not tracing) */
+		palink *lu_next;	/* rest of adjacency list (not tracing) */
 		node *lu_from;	/* source node (tracing) */
 	} un;
 	short	l_flag;		/* right/left syntax, flags */
@@ -133,7 +133,7 @@
  */
 struct node {
 	char	*n_name;
-	link	*n_link;
+	palink	*n_link;
 	Cost	n_cost;
 	node	*n_net;
 	node	*n_root;
@@ -143,10 +143,10 @@
 	unsigned short n_tloc;
 	unsigned short n_flag;
 };
-struct link {
+struct palink {
 	node	*l_to;
 	Cost	l_cost;
-	link	*l_next;
+	palink	*l_next;
 	node	*l_from;
 	short	l_flag;
 	char	l_netop;
@@ -159,3 +159,85 @@
 	dom *prev;
 	char *name;
 };
+
+/* prototypes addlink.c */
+extern palink *addlink(node *from, register node *to, Cost cost, int netchar, int netdir);
+extern void deadlink(node *nleft, node *nright);
+extern void atrace(node *n1, node *n2);
+extern int tracelink(char *arg);
+extern void deletelink(node *from, node *to);
+extern int maptrace(register node *from, register node *to);
+extern long Lcount;
+
+/* prototypes addnode.c */
+extern node *addnode(register char *name);
+extern node *addprivate(register char *name);
+extern void alias(node *n1, node *n2);
+extern void hashanalyze(void);
+extern void fixprivate(void);
+extern node *addhidden(register char *name);
+extern node **Table;
+extern long Tabsize;
+
+/* prototypes domain.c */
+extern int ondomlist(dom **headp, char *domain);
+extern int nslookup(char *domain);
+extern void adddom(dom **headp, char *domain);
+extern void movetofront(dom **headp, dom *d);
+extern int isadomain(char *domain);
+
+/* prototypes local.c */
+extern char *local(void);
+
+/* prototypes main.c */
+extern void die(const char *s);
+extern const char *Cfile;
+extern char *Graphout;
+extern char *Linkout;
+extern char **Argv;
+extern node *Home;
+extern int Cflag;
+extern int Dflag;
+extern int Iflag;
+extern int Tflag;
+extern int Vflag;
+extern int Fflag;
+extern int InetFlag;
+extern int Lineno;
+extern int Argc;
+
+/* prototypes mapaux.c */
+extern long pack(long low, long high);
+extern void resetnodes(void);
+extern void dumpgraph(void);
+extern void showlinks(void);
+extern int tiebreaker(node *n, register node *newp );
+extern node *ncopy(register node *parent, register palink *l);
+
+/* prototypes mapit.c */
+void mapit(void);
+extern long Nheap, Hashpart, NumNcopy, Nlink, NumLcopy;
+
+/* prototypes mem.c */
+extern void freelink(palink *l);
+extern void wasted(void);
+extern void freetable(node **t, long size);
+extern long allocation(void);
+extern palink *newlink(void);
+extern node *newnode(void);
+extern dom *newdom(void);
+extern char *strsave(const char *s);
+extern node **newtable(long size);
+#ifdef MYMALLOC
+extern char *mymalloc(register unsigned int n);
+#endif
+extern long Ncount;
+
+/* prototypes parse.c */
+extern void yyerror(const char *s);
+extern int yyparse(void);
+extern long Tcount;
+
+/* prototypes printit.c */
+extern void printit(void);
+