goto prop_msg_full;
        if (nla_put_u32(msg->skb, TIPC_NLA_PROP_WIN, bearer->window))
                goto prop_msg_full;
+       if (bearer->media->type_id == TIPC_MEDIA_TYPE_UDP)
+               if (nla_put_u32(msg->skb, TIPC_NLA_PROP_MTU, bearer->mtu))
+                       goto prop_msg_full;
 
        nla_nest_end(msg->skb, prop);
 
 
                if (props[TIPC_NLA_PROP_TOL]) {
                        b->tolerance = nla_get_u32(props[TIPC_NLA_PROP_TOL]);
-                       tipc_node_apply_tolerance(net, b);
+                       tipc_node_apply_property(net, b, TIPC_NLA_PROP_TOL);
                }
                if (props[TIPC_NLA_PROP_PRIO])
                        b->priority = nla_get_u32(props[TIPC_NLA_PROP_PRIO]);
                if (props[TIPC_NLA_PROP_WIN])
                        b->window = nla_get_u32(props[TIPC_NLA_PROP_WIN]);
+               if (props[TIPC_NLA_PROP_MTU]) {
+                       if (b->media->type_id != TIPC_MEDIA_TYPE_UDP)
+                               return -EINVAL;
+#ifdef CONFIG_TIPC_MEDIA_UDP
+                       if (tipc_udp_mtu_bad(nla_get_u32
+                                            (props[TIPC_NLA_PROP_MTU])))
+                               return -EINVAL;
+                       b->mtu = nla_get_u32(props[TIPC_NLA_PROP_MTU]);
+                       tipc_node_apply_property(net, b, TIPC_NLA_PROP_MTU);
+#endif
+               }
        }
 
        return 0;
 
        kfree_skb(skb);
 }
 
-void tipc_node_apply_tolerance(struct net *net, struct tipc_bearer *b)
+void tipc_node_apply_property(struct net *net, struct tipc_bearer *b,
+                             int prop)
 {
        struct tipc_net *tn = tipc_net(net);
        int bearer_id = b->identity;
        list_for_each_entry_rcu(n, &tn->node_list, list) {
                tipc_node_write_lock(n);
                e = &n->links[bearer_id];
-               if (e->link)
-                       tipc_link_set_tolerance(e->link, b->tolerance, &xmitq);
+               if (e->link) {
+                       if (prop == TIPC_NLA_PROP_TOL)
+                               tipc_link_set_tolerance(e->link, b->tolerance,
+                                                       &xmitq);
+                       else if (prop == TIPC_NLA_PROP_MTU)
+                               tipc_link_set_mtu(e->link, b->mtu);
+               }
                tipc_node_write_unlock(n);
                tipc_bearer_xmit(net, bearer_id, &xmitq, &e->maddr);
        }
 
                          struct tipc_media_addr *maddr,
                          bool *respond, bool *dupl_addr);
 void tipc_node_delete_links(struct net *net, int bearer_id);
-void tipc_node_apply_tolerance(struct net *net, struct tipc_bearer *b);
+void tipc_node_apply_property(struct net *net, struct tipc_bearer *b, int prop);
 int tipc_node_get_linkname(struct net *net, u32 bearer_id, u32 node,
                           char *linkname, size_t len);
 int tipc_node_xmit(struct net *net, struct sk_buff_head *list, u32 dnode,