void ax25_cb_add(ax25_cb *);
 struct sock *ax25_find_listener(ax25_address *, int, struct net_device *, int);
 struct sock *ax25_get_socket(ax25_address *, ax25_address *, int);
-ax25_cb *ax25_find_cb(ax25_address *, ax25_address *, ax25_digi *,
+ax25_cb *ax25_find_cb(const ax25_address *, ax25_address *, ax25_digi *,
                      struct net_device *);
 void ax25_send_to_raw(ax25_address *, struct sk_buff *, int);
 void ax25_destroy_socket(ax25_cb *);
 
 void ax25_linkfail_register(struct ax25_linkfail *lf);
 void ax25_linkfail_release(struct ax25_linkfail *lf);
-int __must_check ax25_listen_register(ax25_address *, struct net_device *);
-void ax25_listen_release(ax25_address *, struct net_device *);
+int __must_check ax25_listen_register(const ax25_address *,
+                                     struct net_device *);
+void ax25_listen_release(const ax25_address *, struct net_device *);
 int(*ax25_protocol_function(unsigned int))(struct sk_buff *, ax25_cb *);
-int ax25_listen_mine(ax25_address *, struct net_device *);
+int ax25_listen_mine(const ax25_address *, struct net_device *);
 void ax25_link_failed(ax25_cb *, int);
 int ax25_protocol_is_registered(unsigned int);
 
 extern const struct header_ops ax25_header_ops;
 
 /* ax25_out.c */
-ax25_cb *ax25_send_frame(struct sk_buff *, int, ax25_address *, ax25_address *,
-                        ax25_digi *, struct net_device *);
+ax25_cb *ax25_send_frame(struct sk_buff *, int, const ax25_address *,
+                        ax25_address *, ax25_digi *, struct net_device *);
 void ax25_output(ax25_cb *, int, struct sk_buff *);
 void ax25_kick(ax25_cb *);
 void ax25_transmit_buffer(ax25_cb *, struct sk_buff *, int);
 
  *     Find an AX.25 control block given both ends. It will only pick up
  *     floating AX.25 control blocks or non Raw socket bound control blocks.
  */
-ax25_cb *ax25_find_cb(ax25_address *src_addr, ax25_address *dest_addr,
+ax25_cb *ax25_find_cb(const ax25_address *src_addr, ax25_address *dest_addr,
        ax25_digi *digi, struct net_device *dev)
 {
        ax25_cb *s;
 
 
        spin_lock_bh(&ax25_dev_lock);
        for (ax25_dev = ax25_dev_list; ax25_dev != NULL; ax25_dev = ax25_dev->next)
-               if (ax25cmp(addr, (ax25_address *)ax25_dev->dev->dev_addr) == 0) {
+               if (ax25cmp(addr, (const ax25_address *)ax25_dev->dev->dev_addr) == 0) {
                        res = ax25_dev;
                }
        spin_unlock_bh(&ax25_dev_lock);
 
 
 EXPORT_SYMBOL(ax25_linkfail_release);
 
-int ax25_listen_register(ax25_address *callsign, struct net_device *dev)
+int ax25_listen_register(const ax25_address *callsign, struct net_device *dev)
 {
        struct listen_struct *listen;
 
 
 EXPORT_SYMBOL(ax25_listen_register);
 
-void ax25_listen_release(ax25_address *callsign, struct net_device *dev)
+void ax25_listen_release(const ax25_address *callsign, struct net_device *dev)
 {
        struct listen_struct *s, *listen;
 
        return res;
 }
 
-int ax25_listen_mine(ax25_address *callsign, struct net_device *dev)
+int ax25_listen_mine(const ax25_address *callsign, struct net_device *dev)
 {
        struct listen_struct *listen;
 
 
 }
 
 static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
-       ax25_address *dev_addr, struct packet_type *ptype)
+                   const ax25_address *dev_addr, struct packet_type *ptype)
 {
        ax25_address src, dest, *next_digi = NULL;
        int type = 0, mine = 0, dama;
 
        skb_pull(skb, AX25_KISS_HEADER_LEN);    /* Remove the KISS byte */
 
-       return ax25_rcv(skb, dev, (ax25_address *)dev->dev_addr, ptype);
+       return ax25_rcv(skb, dev, (const ax25_address *)dev->dev_addr, ptype);
 }
 
 
 static DEFINE_SPINLOCK(ax25_frag_lock);
 
-ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax25_address *dest, ax25_digi *digi, struct net_device *dev)
+ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, const ax25_address *src, ax25_address *dest, ax25_digi *digi, struct net_device *dev)
 {
        ax25_dev *ax25_dev;
        ax25_cb *ax25;
 
        struct sock *sk = sock->sk;
        struct nr_sock *nr = nr_sk(sk);
        struct sockaddr_ax25 *addr = (struct sockaddr_ax25 *)uaddr;
-       ax25_address *source = NULL;
+       const ax25_address *source = NULL;
        ax25_uid_assoc *user;
        struct net_device *dev;
        int err = 0;
                        err = -ENETUNREACH;
                        goto out_release;
                }
-               source = (ax25_address *)dev->dev_addr;
+               source = (const ax25_address *)dev->dev_addr;
 
                user = ax25_findbyuid(current_euid());
                if (user) {
 
                if (err)
                        return err;
 
-               ax25_listen_release((ax25_address *)dev->dev_addr, NULL);
+               ax25_listen_release((const ax25_address *)dev->dev_addr, NULL);
        }
 
        dev_addr_set(dev, sa->sa_data);
 {
        int err;
 
-       err = ax25_listen_register((ax25_address *)dev->dev_addr, NULL);
+       err = ax25_listen_register((const ax25_address *)dev->dev_addr, NULL);
        if (err)
                return err;
 
 
 static int nr_close(struct net_device *dev)
 {
-       ax25_listen_release((ax25_address *)dev->dev_addr, NULL);
+       ax25_listen_release((const ax25_address *)dev->dev_addr, NULL);
        netif_stop_queue(dev);
        return 0;
 }
 
        rcu_read_lock();
        for_each_netdev_rcu(&init_net, dev) {
                if ((dev->flags & IFF_UP) && dev->type == ARPHRD_NETROM &&
-                   ax25cmp(addr, (ax25_address *)dev->dev_addr) == 0) {
+                   ax25cmp(addr, (const ax25_address *)dev->dev_addr) == 0) {
                        dev_hold(dev);
                        goto out;
                }
 
        ax25s = nr_neigh->ax25;
        nr_neigh->ax25 = ax25_send_frame(skb, 256,
-                                        (ax25_address *)dev->dev_addr,
+                                        (const ax25_address *)dev->dev_addr,
                                         &nr_neigh->callsign,
                                         nr_neigh->digipeat, nr_neigh->dev);
        if (ax25s)
 
  */
 static int rose_send_frame(struct sk_buff *skb, struct rose_neigh *neigh)
 {
-       ax25_address *rose_call;
+       const ax25_address *rose_call;
        ax25_cb *ax25s;
 
        if (ax25cmp(&rose_callsign, &null_ax25_address) == 0)
-               rose_call = (ax25_address *)neigh->dev->dev_addr;
+               rose_call = (const ax25_address *)neigh->dev->dev_addr;
        else
                rose_call = &rose_callsign;
 
  */
 static int rose_link_up(struct rose_neigh *neigh)
 {
-       ax25_address *rose_call;
+       const ax25_address *rose_call;
        ax25_cb *ax25s;
 
        if (ax25cmp(&rose_callsign, &null_ax25_address) == 0)
-               rose_call = (ax25_address *)neigh->dev->dev_addr;
+               rose_call = (const ax25_address *)neigh->dev->dev_addr;
        else
                rose_call = &rose_callsign;