#ifndef RT_NAMES_H_
#define RT_NAMES_H_ 1

#include <stdint.h>

extern const char* rtnl_rtprot_n2a(int id, char *buf, int len);
extern const char* rtnl_rtscope_n2a(int id, char *buf, int len);
extern const char* rtnl_dsfield_n2a(int id, char *buf, int len);
extern int rtnl_rtprot_a2n(uint32_t *id, char *arg);
extern int rtnl_rtscope_a2n(uint32_t *id, char *arg);
extern int rtnl_rtrealm_a2n(uint32_t *id, char *arg);
extern int rtnl_dsfield_a2n(uint32_t *id, char *arg);


extern const char * ll_type_n2a(int type, char *buf, int len);

extern const char *ll_addr_n2a(unsigned char *addr, int alen, int type,
				char *buf, int blen);
extern int ll_addr_a2n(unsigned char *lladdr, int len, char *arg);

extern const char * ll_proto_n2a(unsigned short id, char *buf, int len);
extern int ll_proto_a2n(unsigned short *id, char *buf);


#endif
