extern int  sysctl_rose_maximum_vcs;
 extern int  sysctl_rose_window_size;
 
-int rosecmp(rose_address *, rose_address *);
-int rosecmpm(rose_address *, rose_address *, unsigned short);
+int rosecmp(const rose_address *, const rose_address *);
+int rosecmpm(const rose_address *, const rose_address *, unsigned short);
 char *rose2asc(char *buf, const rose_address *);
 struct sock *rose_find_socket(unsigned int, struct rose_neigh *);
 void rose_kill_by_neigh(struct rose_neigh *);
 extern struct seq_operations rose_route_seqops;
 
 void rose_add_loopback_neigh(void);
-int __must_check rose_add_loopback_node(rose_address *);
-void rose_del_loopback_node(rose_address *);
+int __must_check rose_add_loopback_node(const rose_address *);
+void rose_del_loopback_node(const rose_address *);
 void rose_rt_device_down(struct net_device *);
 void rose_link_device_down(struct net_device *);
 struct net_device *rose_dev_first(void);
 
 /*
  *     Compare two ROSE addresses, 0 == equal.
  */
-int rosecmp(rose_address *addr1, rose_address *addr2)
+int rosecmp(const rose_address *addr1, const rose_address *addr2)
 {
        int i;
 
 /*
  *     Compare two ROSE addresses for only mask digits, 0 == equal.
  */
-int rosecmpm(rose_address *addr1, rose_address *addr2, unsigned short mask)
+int rosecmpm(const rose_address *addr1, const rose_address *addr2,
+            unsigned short mask)
 {
        unsigned int i, j;
 
 
                if (err)
                        return err;
 
-               rose_del_loopback_node((rose_address *)dev->dev_addr);
+               rose_del_loopback_node((const rose_address *)dev->dev_addr);
        }
 
        dev_addr_set(dev, sa->sa_data);
 {
        int err;
 
-       err = rose_add_loopback_node((rose_address *)dev->dev_addr);
+       err = rose_add_loopback_node((const rose_address *)dev->dev_addr);
        if (err)
                return err;
 
 static int rose_close(struct net_device *dev)
 {
        netif_stop_queue(dev);
-       rose_del_loopback_node((rose_address *)dev->dev_addr);
+       rose_del_loopback_node((const rose_address *)dev->dev_addr);
        return 0;
 }
 
 
 /*
  *     Add a loopback node.
  */
-int rose_add_loopback_node(rose_address *address)
+int rose_add_loopback_node(const rose_address *address)
 {
        struct rose_node *rose_node;
        int err = 0;
 /*
  *     Delete a loopback node.
  */
-void rose_del_loopback_node(rose_address *address)
+void rose_del_loopback_node(const rose_address *address)
 {
        struct rose_node *rose_node;
 
 
        rcu_read_lock();
        for_each_netdev_rcu(&init_net, dev) {
-               if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0) {
+               if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE &&
+                   rosecmp(addr, (const rose_address *)dev->dev_addr) == 0) {
                        dev_hold(dev);
                        goto out;
                }
 
        rcu_read_lock();
        for_each_netdev_rcu(&init_net, dev) {
-               if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE && rosecmp(addr, (rose_address *)dev->dev_addr) == 0)
+               if ((dev->flags & IFF_UP) && dev->type == ARPHRD_ROSE &&
+                   rosecmp(addr, (const rose_address *)dev->dev_addr) == 0)
                        goto out;
        }
        dev = NULL;