|
87 | 87 |
|
88 | 88 | static int call_fib_entry_notifier(struct notifier_block *nb, struct net *net,
|
89 | 89 | enum fib_event_type event_type, u32 dst,
|
90 |
| - int dst_len, struct fib_info *fi, |
91 |
| - u8 tos, u8 type, u32 tb_id) |
| 90 | + int dst_len, struct fib_alias *fa) |
92 | 91 | {
|
93 | 92 | struct fib_entry_notifier_info info = {
|
94 | 93 | .dst = dst,
|
95 | 94 | .dst_len = dst_len,
|
96 |
| - .fi = fi, |
97 |
| - .tos = tos, |
98 |
| - .type = type, |
99 |
| - .tb_id = tb_id, |
| 95 | + .fi = fa->fa_info, |
| 96 | + .tos = fa->fa_tos, |
| 97 | + .type = fa->fa_type, |
| 98 | + .tb_id = fa->tb_id, |
100 | 99 | };
|
101 | 100 | return call_fib4_notifier(nb, net, event_type, &info.info);
|
102 | 101 | }
|
103 | 102 |
|
104 | 103 | static int call_fib_entry_notifiers(struct net *net,
|
105 | 104 | enum fib_event_type event_type, u32 dst,
|
106 |
| - int dst_len, struct fib_info *fi, |
107 |
| - u8 tos, u8 type, u32 tb_id) |
| 105 | + int dst_len, struct fib_alias *fa) |
108 | 106 | {
|
109 | 107 | struct fib_entry_notifier_info info = {
|
110 | 108 | .dst = dst,
|
111 | 109 | .dst_len = dst_len,
|
112 |
| - .fi = fi, |
113 |
| - .tos = tos, |
114 |
| - .type = type, |
115 |
| - .tb_id = tb_id, |
| 110 | + .fi = fa->fa_info, |
| 111 | + .tos = fa->fa_tos, |
| 112 | + .type = fa->fa_type, |
| 113 | + .tb_id = fa->tb_id, |
116 | 114 | };
|
117 | 115 | return call_fib4_notifiers(net, event_type, &info.info);
|
118 | 116 | }
|
@@ -1216,9 +1214,7 @@ int fib_table_insert(struct net *net, struct fib_table *tb,
|
1216 | 1214 | new_fa->fa_default = -1;
|
1217 | 1215 |
|
1218 | 1216 | call_fib_entry_notifiers(net, FIB_EVENT_ENTRY_REPLACE,
|
1219 |
| - key, plen, fi, |
1220 |
| - new_fa->fa_tos, cfg->fc_type, |
1221 |
| - tb->tb_id); |
| 1217 | + key, plen, new_fa); |
1222 | 1218 | rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen,
|
1223 | 1219 | tb->tb_id, &cfg->fc_nlinfo, nlflags);
|
1224 | 1220 |
|
@@ -1273,8 +1269,7 @@ int fib_table_insert(struct net *net, struct fib_table *tb,
|
1273 | 1269 | tb->tb_num_default++;
|
1274 | 1270 |
|
1275 | 1271 | rt_cache_flush(cfg->fc_nlinfo.nl_net);
|
1276 |
| - call_fib_entry_notifiers(net, event, key, plen, fi, tos, cfg->fc_type, |
1277 |
| - tb->tb_id); |
| 1272 | + call_fib_entry_notifiers(net, event, key, plen, new_fa); |
1278 | 1273 | rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, new_fa->tb_id,
|
1279 | 1274 | &cfg->fc_nlinfo, nlflags);
|
1280 | 1275 | succeeded:
|
@@ -1574,8 +1569,7 @@ int fib_table_delete(struct net *net, struct fib_table *tb,
|
1574 | 1569 | return -ESRCH;
|
1575 | 1570 |
|
1576 | 1571 | call_fib_entry_notifiers(net, FIB_EVENT_ENTRY_DEL, key, plen,
|
1577 |
| - fa_to_delete->fa_info, tos, |
1578 |
| - fa_to_delete->fa_type, tb->tb_id); |
| 1572 | + fa_to_delete); |
1579 | 1573 | rtmsg_fib(RTM_DELROUTE, htonl(key), fa_to_delete, plen, tb->tb_id,
|
1580 | 1574 | &cfg->fc_nlinfo, 0);
|
1581 | 1575 |
|
@@ -1892,9 +1886,7 @@ int fib_table_flush(struct net *net, struct fib_table *tb)
|
1892 | 1886 |
|
1893 | 1887 | call_fib_entry_notifiers(net, FIB_EVENT_ENTRY_DEL,
|
1894 | 1888 | n->key,
|
1895 |
| - KEYLENGTH - fa->fa_slen, |
1896 |
| - fi, fa->fa_tos, fa->fa_type, |
1897 |
| - tb->tb_id); |
| 1889 | + KEYLENGTH - fa->fa_slen, fa); |
1898 | 1890 | hlist_del_rcu(&fa->fa_list);
|
1899 | 1891 | fib_release_info(fa->fa_info);
|
1900 | 1892 | alias_free_mem_rcu(fa);
|
@@ -1932,8 +1924,7 @@ static void fib_leaf_notify(struct net *net, struct key_vector *l,
|
1932 | 1924 | continue;
|
1933 | 1925 |
|
1934 | 1926 | call_fib_entry_notifier(nb, net, FIB_EVENT_ENTRY_ADD, l->key,
|
1935 |
| - KEYLENGTH - fa->fa_slen, fi, fa->fa_tos, |
1936 |
| - fa->fa_type, fa->tb_id); |
| 1927 | + KEYLENGTH - fa->fa_slen, fa); |
1937 | 1928 | }
|
1938 | 1929 | }
|
1939 | 1930 |
|
|
0 commit comments